1. let、const 和 block 作用域

let 允许创建块级作用域,ES6 推荐在函数中使用 let 定义变量,而非 var

  1. var a = 2;
  2. {
  3. let a = 3;
  4. console.log(a); // 3
  5. }
  6. console.log(a); // 2

同样在块级作用域有效的另一个变量声明方式是 const,它可以声明一个常量。ES6 中,const 声明的常量类似于指针,它指向某个引用,也就是说这个「常量」并非一成不变的,如:

  1. {
  2. const ARR = [5,6];
  3. ARR.push(7);
  4. console.log(ARR); // [5,6,7]
  5. ARR = 10; // TypeError
  6. }

有几个点需要注意:

  • let 关键词声明的变量不具备变量提升(hoisting)特性
  • let 和 const 声明只在最靠近的一个块中(花括号内)有效
  • 当使用常量 const 声明时,请使用大写变量,如:CAPITAL_CASING
  • const 在声明时必须被赋值