javascript 中的暂时死区是什么?
JavaScript 中的临时死区 (TDZ) 是指作用域中变量的创建与初始化之间的时间段。在此期间,变量处于未初始化状态,无法访问。尝试访问它将导致 ReferenceError。
要点:
**代码示例 1:访问 TDZ 中的变量**
console.log(x); // ReferenceError: Cannot access 'x' before initialization let x = 10; console.log(x); // 10
解释:
**代码示例 2:带有 const 的 TDZ**
console.log(y); // ReferenceError: Cannot access 'y' before initialization const y = 20; console.log(y); // 20
解释:
**代码示例 3:块范围内的 TDZ**
{ console.log(a); // ReferenceError: Cannot access 'a' before initialization let a = 5; console.log(a); // 5 }
解释:
**代码示例 4:没有带 var 的 TDZ**
console.log(b); // undefined var b = 15; console.log(b); // 15
解释:
**代码示例 5:函数和 TDZ**
function example() { console.log(c); // ReferenceError: Cannot access 'c' before initialization let c = 30; } example();
解释:
**代码示例 6:具有默认参数的 TDZ**
function test(x = y, y = 10) { console.log(x, y); } test(); // ReferenceError: Cannot access 'y' before initialization
解释:
**如何避免 TDZ 问题**
通过牢记 TDZ,您可以编写更可预测且无错误的 JavaScript 代码。