【问题标题】:Destructuring assignment in for...of loop and execution context in JavascriptJavascript中for ... of循环和执行上下文中的解构赋值
【发布时间】:2019-01-06 10:27:00
【问题描述】:

我想深入了解 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);

【问题讨论】:

    标签: javascript ecmascript-6 destructuring executioncontext


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 2021-01-20
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    相关资源
    最近更新 更多