2013-04-12 39 views
2
function foo([a,b]) { 

    console.log(a); 
    console.log(b); 
} 

foo([12,34]); 

打印:解構與分配函數參數

12 
34 

另外這裏:

var { a:x, b:y } = { a:7, b:8 }; 
console.log(x); // prints: 7 
console.log(y); // prints: 8 

是分配有效的這種方法嗎?這種方法會帶來什麼問題嗎?

而且使用相同的技術,我們可以交換兩個變量:

var a = 1; 
var b = 2; 
[a,b] = [b,a]; 

我只是想知道在將來出現這種類型的分配的問題是什麼?我在哪裏可以找到與此類作業有關的最佳參考?

+0

第一個給我「意外的標記[」,第二個「意外的標記{」和第三個「分配中的無效的左側」)。哪個瀏覽器(或其他JS實現)接受這些分配? – JJJ

+0

所有這些都是無效的代碼。你怎麼讓他們工作? – Joseph

+0

既然你不會告訴如何或在哪裏你能得到的工作和所有的例子顯然是無效的JS,我將不得不投親如不是一個真正的問題。 – JJJ

回答

0

這是一個Javascript 1.7的功能,它是Javascript的Mozilla實現的一部分。

https://developer.mozilla.org/en-US/docs/JavaScript/New_in_JavaScript/1.7#Destructuring_assignment_(Merge_into_own_page.2Fsection)

這不是任何ECMAScript標準的一部分(據我所知),我不認爲有任何計劃,使其在其他瀏覽器可用;你不應該在便攜式網站中使用它。

+0

重複其實,它不是ECMAScript6 /和諧的一部分? http://wiki.ecmascript.org/doku.php?id=harmony:destructuring – iX3

+1

從2014年1月20日起,ES6規範的工作草案(22版):「2.13.5解構作業 補充語法 在某些情況下當處理生產AssignmentExpression:LeftHandSideExpression = AssignmentExpression時,以下語法用於改進LeftHandSideExpression的解釋......「[(草稿)](http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts ) – iX3

+0

這個答案應該更新... –