let 会产生临时性死区,在当前执行上下文中,会进行变量提升,但未被初始化。
- 在JavaScript 中,暂时性死区(temporary dead zone,TDZ)是指使用 let 或 const 关键字声明变量时,变量在当前作用域中存在但尚未初始化的阶段。在这个阶段,如果尝试访问这些变量,就会触发暂时性死区的错误,即在声明前访问会导致 ReferenceError 。
暂时性死区关键点
- 变量存在但未初始化:在进入变量声明语句所在作用域时,变量已经存在,但尚未被赋值初始化。
- 访问导致错误:在暂时性死区中,尝试访问这些变量会触发 ReferenceError,因为 JavaScript 引擎认为在声明前不能安全地使用这些变量。
- 仅适用于 let 和 const: 因为 var 声明的变量会被提升至作用域的顶部,不会进入暂时性死区.