2009-10-31 50 views
1

火狐3.5.3(至少)讓我寫類似的代碼:在符合ECMAScript的JavaScript中是否將數組作爲左值?

var array = [4, 5, 6]; 
var foo, bar, baz; 
[foo, bar, baz] = array; 

此時

foo => 4 
bar => 5 
baz => 6 

這對於代碼的清晰性非常有幫助。

這是否被認爲符合ECMAScript?規範中沒有看到任何內容,但JSLint返回錯誤。

+0

我不知道這是否合乎邏輯...似乎不合邏輯的LHS部分等等部分 – mauris 2009-10-31 16:04:31

回答

3

不,這是JavaScript 1.7中引入的一項功能,稱爲destructuring assignment。 JavaScript不是ECMAScript。 ECMAScript是一些JavaScript功能的嘗試標準化。只有兩個JavaScript引擎:(蜘蛛|追蹤|動作)猴子和犀牛。其他每個引擎都是ECMAScript引擎。

下面是一些例子:

var {a, b} = {b:2, a:1}; // a === 1, b === 2 
var [c, d] = [3, 4]; // c === 3, d === 4 
var {x: e} = {x: 5}; // e === 5 
function f({a, b: c}, [d, e]) { 
    // same as: var [{a, b: c}, [d, e]] = arguments 
} 

歌劇院部分實現了一些解構賦值。它不支持它的對象或函數參數,但它確實支持你的簡單例子。

+0

啊。我認爲這將是一個更新的功能。由於1.7還沒有完全支持,猜測我必須堅持更詳細的選項。謝謝! – 2009-10-31 16:23:56

+0

最新評論,但我正在尋找主題。解構賦值是爲現在報廢的ECMAScript第4版計劃的一項功能。這是有點傷心,它沒有成爲ECMAScript 5 – 2010-02-24 20:59:47

+0

它看起來像它在ecmascript表:和諧http://wiki.ecmascript.org/doku.php?id=harmony:destructuring – 2010-10-19 20:33:22

相關問題