JavaScript 中的解构和初始化

Destructuring In JavaScript and Initialization

JavaScript 中的初始化如何进行?我在下面的代码中收到一条错误消息,说在初始化之前无法访问 obj

let a = 7;
let b = 10;

const obj = { a:23, b:35, c:70 }
({a, b} = obj);
console.log(a, b);

这是因为您依赖于自动分号插入并且在 const obj... 行之后没有添加自动分号。没有一个,该行和下一行被视为一个表达式,它确实在初始化之前尝试访问 obj

const obj = { a:23, b:35, c:70 }({a, b} = obj);

对于解析器来说,这看起来像是一个函数调用。如果您没有尝试在解析器认为是参数列表的地方访问 obj,那么当它到达调用对象的点时它就会失败,因为该对象不可调用。

您需要明确的分号来分隔语句:

let a = 7;
let b = 10;

const obj = { a:23, b:35, c:70 }; // <==== Here
({a, b} = obj);
console.log(a, b);

看看你的代码,你可能只是忘记了这个,因为你包括了其他的。但是,如果您要依赖 ASI,请确保在以 ([` 开头的每一行前加上 ; 以防止该行继续前一个表达式。

}

后面加上分号

let a = 7;
let b = 10;

const obj = { a:23, b:35, c:70 };
({a, b} = obj);
console.log(a, b);