标识符

JS中的变量是弱类型可以保存所有类型的数据,即变量没有类型而值有类型。变量名以字母、$、 开始,后跟字母、数字、JS关键字不能作为变量的名字。中文是合法的标识符,可以用作变量名。

变量声明

JS中声明变量可以使用const、let、var三个关键字。

弱类型

在JS中变量类型由所引用的值决定,使用typeof函数查看变量值类型。

  1. var foo = 10;
  2. var bar = 'hello';
  3. var baz = true;
  4. console.log(typeof foo); // number
  5. console.log(typeof bar); // string
  6. console.log(typeof baz); // boolean

变量提升

解析器会先解析代码,然后把声明的变量的声明提升到最前,这就叫做变量提升。

  1. console.log(foo); //undefined
  2. var foo = 1;
  3. console.log(foo); //1
  4. //以上代码解析器执行过程如下
  5. var foo;
  6. console.log(foo); //1
  7. foo = 1;
  8. console.log(foo); //1

TDZ 暂时死区

TDZ 又称暂时性死区,指变量在作用域内已经存在,但必须在let/const声明后才可以使用,TDZ可以让程序保持先声明后使用的习惯,让程序更稳定。

  • 变量要先声明后使用
  • 建议使用let/const 而少使用var

使用let/const声明的变量在声明前存在临时性死区(TDZ)使用会发生错误

  1. console.log(foo);
  2. var foo = 'HelloWorld!';