es6回顾 - let 和 const 命令

let和const的共同属性:

声明的变量只在它所在的代码块有效。
不存在变量提升
暂时性死区 ---> 只能在声明的位置后面使用。
不允许重复声明(内层作用域可以定义外层作用域的同名变量。)比如说:

function f1() {
  let n = 5;
  if (true) {
    let n = 10;
  }
  console.log(n); // 5
}
块级作用域

没有块级作用域的坏处:
内层变量可能会覆盖外层变量。
用来计数的循环变量泄露为全局变量,比如说: 变量i只用来控制循环,但是循环结束后,它并没有消失,泄露成了全局变量。

var s = 'hello';
for (var i = 0; i < s.length; i++) {
  console.log(s[i]);
}
console.log(i); // 5

有一个地方需要注意: ES6 的块级作用域必须有大括号,如果没有大括号,JavaScript 引擎就认为不存在块级作用域。

// 第一种写法,报错
if (true) let x = 1;

// 第二种写法,不报错
if (true) {
  let x = 1;
}
2. const

声明一个只读的常量。一旦声明,常量的值就不能改变。
const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。

最后:

ES6 声明变量的六种方法

ES5 只有两种声明变量的方法:var命令和function命令。ES6 除了添加letconst命令,还有另外两种声明变量的方法:import命令和class命令。所以,ES6 一共有 6 种声明变量的方法。

你可能感兴趣的:(es6回顾 - let 和 const 命令)