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はエラーを返します。
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はエラーを返します。
いいえ、これは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は部分的にいくつかの破壊的な割り当てを実装しています。オブジェクトや関数の引数ではサポートされていませんが、簡単な例ではサポートされています。