簡體   English   中英

解構給出解析錯誤

[英]Destructuring giving parsing error

我試圖了解ES2015(ECMAScript 6)中的解構。

我希望函數對某些變量起作用並重新分配新的變量。

在下面的示例中,我創建了一個函數來初始化foo和bar,以及另一個函數來更改foo和bar。

然后,我創建了三個使用foo和bar的函數。 其中兩個工作,一個沒有。 我似乎不知道為什么。

請分享任何見解,以幫助我理解。

謝謝!

 function initializeFooBar() { let foo = 1, bar = 2; return {foo, bar}; } function changeFooBar(f, b) { let foo = f*2, bar = b*2; return {foo, bar}; } function fooBarWorks() { let {foo, bar} = initializeFooBar(); console.log(foo + bar); // 3 } function fooBarAlsoWorks() { let f = 1, b = 2, {foo, bar} = changeFooBar(f, b); console.log(foo + bar); // 6 } function fooBarDoesntWork() { let {foo, bar} = initializeFooBar(); {foo, bar} = changeFooBar(foo, bar); // causes parsing error console.log(foo + bar); } fooBarWorks(); // writes 3 to console fooBarAlsoWorks(); // writes 6 to console fooBarDoesntWork(); // doesn't run due to "parsing error unexpected tolken =" 

您需要更改:

{foo, bar} = changeFooBar(foo, bar);

至:

({foo, bar} = changeFooBar(foo, bar));

因為{在這種情況下被解釋為代碼塊的開頭。

()包圍賦值可消除{的含義。

根據MDN文檔

使用不帶聲明的對象文字解構賦值時,賦值語句周圍的( .. )是必需的語法。

{a, b} = {a:1, b:2}是無效的獨立語法,因為左側的{a, b}被認為是一個塊,而不是對象文字。

但是, ({a, b} = {a:1, b:2})是有效的, var {a, b} = {a:1, b:2}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM