bibi7 / fe-daily-increase

一个记录开发日常和奇奇怪怪的点的repo
MIT License
5 stars 0 forks source link

暂时性死区TDZ #18

Open bibi7 opened 5 years ago

bibi7 commented 5 years ago

17 接上文,顺便讲讲暂时性死区。

比较简单,稍微提一下

console.log(a);  //Uncaught ReferenceError: Cannot access 'a' before initialization
const a = 1;

不同于var的变量提升,es6中,letconst声明的变量会存在暂时性死区,也叫TDZ(Temporal Dead Zone)。

来读读规范

The variables are created when their containing Lexical Environment is instantiated but may not be accessed in any way until the variable’s LexicalBinding is evaluated.

变量总是会在包含他的词法环境在被实例化的时候第一时间创建出来,但是在词法绑定之前,任何方式都无法访问该变量。(总感觉这么翻译不是很契合

程序控制流程进入新作用域创建变量,到变量可以被访问的这一段持续时间内,即暂时性死区