暂时性死区
ES6 明确规定,如果区块中存在let
和const
命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。
在代码块内,使用let
命令声明变量之前,该变量都是不可用的。TDZ (temporal dead zone)
if (true) {
//暂时性死区
temp = 123; //会报错
console.log(temp);
let temp;
//暂时性死区
console.log(temp); // undefined
temp = 234;
console.log(temp); // 234
}
在let命令之前,位于块作用域之前的代码都是暂时性死区。