暂时性死区
在代码块内,使用let命令声明变量之前,该变量是不可用的。这在语法上称为“暂时性死区”。(temporal dead zone,简称TDZ)
if(true){
//TDZ开始
tem = "abc";//ReferenceError
console.log(tem);//ReferenceError
let tem ;
console.log(tem);//undefined
tem = 123;
console.log(tem);//123
}
上列代码中,在let 命令声明变量tem之前,都属于变量tem的“死区”。暂时性死区也意味着typeof不是一个百分之百安全的操作。
typeof x;//ReferenceError
let x;