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