1

Firefox 3.5.3では(少なくとも)次のようなコードを書くことができます:

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

その時点で

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

これは、コードを明確にするのに非常に役立ちます。

それはECMAScript準拠と見なされますか?仕様には何も表示されませんでしたが、JSLintはエラーを返します。

4

1 に答える 1

2

いいえ、これはJavaScript1.7で導入されたdestructuringassignmentと呼ばれる機能です。JavaScriptはECMAScriptではありません。ECMAScriptは、一部のJavaScript機能の標準化を試みたものです。JavaScriptエンジンは、(Spider | Trace | Action)MonkeyとRhinoの2つだけです。他のすべてのエンジンは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
}

Operaは部分的にいくつかの破壊的な割り当てを実装しています。オブジェクトや関数の引数ではサポートされていませんが、簡単な例ではサポートされています。

于 2009-10-31T16:16:28.570 に答える