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中,变量在提升后无法访问,直到初始化。
🏷️
标签
➡️