ES6的let,const以及二者与var的区别(1)

ES6 let命令

用来声明变量。语法类似于var,但是所声明的变量,只能在let命令所在的代码块内有效。

for循环的计数器,很适合使用let命令

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


不存在变量提升

var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined。

为了纠正这种现象,let命令改变了语法行为,它所声明的变量一定要在声明之后使用,不然就会报错。



暂时性死区

只要块级作用域内存在let命令,它所声明的变量就绑定在这个区域,不收外部影响。


如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。

使用ket命令声明变量之前,该变量都是不可用的。这在语法上,成为“暂时性死区”(temporal dead zone,TDZ)


在let命令声明变量tmp之前,都属于变量tmp的“死区”。

“暂时性死区”也意味着typeof不再是一个百分百安全的操作。

有些“死区”比较隐蔽,不容易被发现。

调用bar函数会报错。这是因为参数x默认值等于另一个参数y,而此时y还没有声明。

你可能感兴趣的:(ES6的let,const以及二者与var的区别(1))