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,请确保在以 (
、[
或 `
开头的每一行前面加上 ;
以防止该行继续前面的表达式。
关于javascript - JavaScript 中的解构和初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66229052/