The Temporal Dead Zone, or why the TypeScript codebase is full of var statements
8 months ago
- #JavaScript
- #Performance
- #TypeScript
- 时间死区(TDZ)是JavaScript中的一个概念,使用`let`和`const`声明的变量在初始化前不可访问。
- 用`var`声明的变量不存在TDZ,这可能导致在初始化前访问时出现变量泄漏和未定义值等问题。
- TypeScript代码库出于性能考虑大量使用`var`语句,因为避免TDZ检查能带来显著性能提升(某些基准测试中可达8%)。
- 现代JavaScript中通常不推荐使用`var`,因其缺乏块级作用域和不可变性约束,更推荐使用`let`和`const`。
- TDZ是一项有益特性,能防止访问未初始化变量,但会带来运行时性能开销。