ECMAScript 2015 Temporal Dead Zone

时间:2016-04-06 07:58:41

标签: javascript runtime-error ecmascript-6

我是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

为什么会这样?这是一个错误吗?

1 个答案:

答案 0 :(得分:4)

这就是它的方式:

Temporal dead zone and errors with let

  

在ECMAScript 2015中,let 会将变量提升到块的顶部。但是,在变量声明之前引用块中的变量会导致ReferenceError。变量位于从块开始到处理声明的“临时死区”中。