标识符
JS中的变量是弱类型可以保存所有类型的数据,即变量没有类型而值有类型。变量名以字母、$、 开始,后跟字母、数字、。JS关键字不能作为变量的名字。中文是合法的标识符,可以用作变量名。
变量声明
JS中声明变量可以使用const、let、var三个关键字。
弱类型
在JS中变量类型由所引用的值决定,使用typeof函数查看变量值类型。
var foo = 10;var bar = 'hello';var baz = true;console.log(typeof foo); // numberconsole.log(typeof bar); // stringconsole.log(typeof baz); // boolean
变量提升
解析器会先解析代码,然后把声明的变量的声明提升到最前,这就叫做变量提升。
console.log(foo); //undefinedvar foo = 1;console.log(foo); //1//以上代码解析器执行过程如下var foo;console.log(foo); //1foo = 1;console.log(foo); //1
TDZ 暂时死区
TDZ 又称暂时性死区,指变量在作用域内已经存在,但必须在let/const声明后才可以使用,TDZ可以让程序保持先声明后使用的习惯,让程序更稳定。
- 变量要先声明后使用
- 建议使用let/const 而少使用var
使用let/const声明的变量在声明前存在临时性死区(TDZ)使用会发生错误
console.log(foo);var foo = 'HelloWorld!';
