JavaScript中的时间死区(TDZ)和提升

💡 原文英文,约400词,阅读约需2分钟。
📝

内容提要

JavaScript中的TDZ和Hoisting是关于变量声明和访问的概念。TDZ是指进入作用域和变量声明之间的时间段,使用let、const和class声明的变量在初始化之前无法访问。Hoisting是变量和函数声明在编译阶段被移动到作用域顶部的行为。区别在于Hoisting将声明提升到作用域顶部,而TDZ发生在let、const和class中。

🎯

关键要点

  • TDZ(时间死区)是指进入作用域和变量声明之间的时间段,使用let、const和class声明的变量在初始化之前无法访问。
  • 在TDZ中,尝试访问未初始化的变量会导致ReferenceError。
  • Hoisting(提升)是指变量和函数声明在编译阶段被移动到作用域顶部的行为,但只有声明被提升,初始化保持在原位置。
  • 使用var声明的变量会被提升并初始化为undefined,而使用let和const声明的变量在提升后仍处于TDZ,直到初始化。
  • 函数声明会被完全提升,可以在声明之前调用该函数。
  • Hoisting将变量和函数声明提升到作用域顶部,而TDZ发生在let、const和class中,变量在提升后无法访问,直到初始化。
➡️

继续阅读