我想深入了解 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);
我想深入了解 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
。
不在y
对象初始化中使用可以解决问题:
let arr = [];
let z = 8;
for (let { x = 2, y } of [{ x: 1 }, 2, { y: z }]) {
arr.push(x, y);
}
console.log(arr);