Skip to content
快看这页儿写了啥...

什么是暂时性死区?

题干

  • 暂时性死区

题解

当程序的控制流程在新的作用域(函数 或 块 作用域)进行实例化时,在此作用域中用 letconst 声明的变量会先在作用域中被创建出来,但因此时还未进行词法绑定,所以是不能被访问的,如果访问就会抛出错误。因此,在这运行流程进入作用域创建变量,到变量可以被访问之间的这一段时间,就称之为暂时死区。

暂时性死区(Temporal Dead Zone,简称 TDZ)即在 letconst 声明变量前,该变量是不能被访问的。在这个变量所在的作用域中,从变量声明到变量实际被执行赋值的这个阶段,就是 TDZ。在这个阶段,如果访问该变量,就会抛出一个 ReferenceError 异常。

TDZ 的出现是为了解决变量提升带来的问题,它可以让我们更早地发现变量未定义的错误。在使用 letconst 声明变量时,我们需要注意变量的作用域和 TDZ 的存在,避免在 TDZ 中访问变量。

letconst 相反,varfunction 不会受到 TDZ(暂时性死区)的影响,因为他们如果在变量创建之前访问,返回结果为 undefined

相关

let、var、const

变量提升

贡献者

isboyjc's avatar isboyjc

浏览量(PV)  次  ·  独立访客(UV)  人次
不正经的前端 | 八股 · 欢迎 star ⭐