for...of 循环中的解构赋值和 Javascript 中的执行上下文
Destructuring assignment in for...of loop and execution context in Javascript
我想深入了解JS中的for...of循环和解构赋值。以下代码在第 3 行抛出错误:"ReferenceError: y is not defined",但 "y" 是在 for 循环语句之前定义的。有什么问题?
let arr = [ ];
let y = 8;
for (let { x = 2, y } of [{ x: 1 }, 2, { y }]) {
arr.push(x, y);
}
console.log(arr);
似乎 y
在 for
块中的 temporal dead zone 中。
在对象初始化中不使用y
解决了问题:
let arr = [];
let z = 8;
for (let { x = 2, y } of [{ x: 1 }, 2, { y: z }]) {
arr.push(x, y);
}
console.log(arr);
我想深入了解JS中的for...of循环和解构赋值。以下代码在第 3 行抛出错误:"ReferenceError: y is not defined",但 "y" 是在 for 循环语句之前定义的。有什么问题?
let arr = [ ];
let y = 8;
for (let { x = 2, y } of [{ x: 1 }, 2, { y }]) {
arr.push(x, y);
}
console.log(arr);
似乎 y
在 for
块中的 temporal dead zone 中。
在对象初始化中不使用y
解决了问题:
let arr = [];
let z = 8;
for (let { x = 2, y } of [{ x: 1 }, 2, { y: z }]) {
arr.push(x, y);
}
console.log(arr);