回答:
これは現在、ブラウザ間で互換性のある唯一のソリューションです。
var one = arr[0],
two = arr[1];
ES6は、破壊的な割り当てを許可します。
let [x, y] = ['foo', 'bar'];
console.log(x); // 'foo'
console.log(y); // 'bar'
または、最初の例に固執するために:
var arr = ['one', 'two'];
var [one, two] = arr;
デフォルト値を作成することもできます:
const [one = 'one', two = 'two', three = 'three'] = [1, 2];
console.log(one); // 1
console.log(two); // 2
console.log(three); // 'three'
それは破壊的な割り当てです。一部のブラウザでは、次の構文で実行できます。
[one, two] = arr;
最新のブラウザやBabelやTraceurなどのトランスパイラでサポートされています。これは、後にECMAScript Harmonyになり、最終的にES 2015になるECMAScript 4で導入された機能です。
質問はかなり古いですが、私はこの代替(2016)ソリューションを投稿したいと思います。スプレッド演算子 "..."を使用することもできます。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator
let xAndY = [42, 1337];
let f = function(x, y) { return x + y; };
f(...xAndY);
シリアスのアイデアの実現。
http://jsfiddle.net/RichAyotte/6D2wP/
(function(a, b, c, d) {
console.log(a, b, c, d);
}.apply(this, ['a', 'b', 'c', 'd']));
var one = arr[0];
var two = arr[1];
var
変数を使用してグローバルスコープを汚染しないようにする必要があります。
var
2つの個別のvar
宣言を作成するよりも、各スコープのすべてのを1回で宣言する方が良いでしょう。
CoffeeScriptにはそれがあります:http : //jashkenas.github.com/coffee-script/#pattern_matching
そして、ページの上部から引用:
「CoffeeScriptはJavaScriptにコンパイルされる小さな言語です。JavaScriptの目立たない子供兄弟と同じように考えてください。同じ遺伝子で、ほぼ同じ高さですが、スタイルの感覚は異なります。ほんの少しのボーナス特典を除いて、CoffeeScriptのステートメントは1つに対応しますJavaScriptで同等のものを1対1で使用することは、それを言い換える別の方法にすぎません。」