只要在块级作用域中存在let
命令,它所声明的变量就绑定了这个区域,不再受外部影响。
{
var a = 1;
if(true) {
a = 4;
let a = 5;
console.log(a);
}
}
上述的这段代码,会报错误a
未定义,这是因为a
在作用域内使用let
声明,但是a
却在声明之前调用,这里就形成了暂时性死区,所以就调用不成功了,尽管a
在外部也有定义。
在es6中,如果区块中存在let
和const
命令,这个区块对这些命令声明的变量,从一开始就形成了封闭的作用域。凡是在声明之前就使用这些变量,就会报错。
如果觉得我的文章对您有用,请您随意打赏。您的支持将鼓励我更加努力创作!
如无特殊声明,文章均为原创,若有不正之处,万望告知。转载请附上原文地址,十分感谢!