JS ES6 let和const命令

来源:互联网 发布:学案例 明底线 知敬畏 编辑:程序博客网 时间:2024/05/17 01:45

http://es6.ruanyifeng.com/#docs/let
1、let声明的变量只在let命令所在的代码块有效。

{  let a = 10;  var b = 1;}a // ReferenceError: a is not defined.b // 1

for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。

for (let i = 0; i < 3; i++) {  let i = 'abc';  console.log(i);}// abc// abc// abc

上面代码正确运行,输出了3次abc。这表明函数内部的变量i与循环变量i不在同一个作用域,有各自单独的作用域。

2、不存在变量提升
let命令声明的变量一定要在声明后使用,否则报错。

console.log(foo); // 输出undefinedvar foo = 2;// let 的情况console.log(bar); // 报错ReferenceErrorlet bar = 2;

3、暂时性死区
只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。
在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。