我是ECMAScript 2015(ES6)的新手,我正在阅读ES6中的时间死区:
if(typeof x === "undefined") {
console.log("x doesn't exist or is undefined");
} else {
// safe to refer to x....
}
let x = 5; //script.js:1 Uncaught ReferenceError: x is not defined
显然在ES6中,如果在声明变量之前使用typeof测试变量
console.log(typeof x);
let x = 5; //script.js:1 Uncaught ReferenceError: x is not defined
为什么会这样?这是一个错误吗?
答案 0 :(得分:4)
这就是它的方式:
Temporal dead zone and errors with let
在ECMAScript 2015中,
let
会将变量提升到块的顶部。但是,在变量声明之前引用块中的变量会导致ReferenceError。变量位于从块开始到处理声明的“临时死区”中。