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);

似乎 yfor 块中的 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);