的JavaScript。 将数组值赋给多个variables?

var a,b,c; var arr = [1,2,3]; [a,b,c] = arr; 

此代码在Firefox中完美工作,结果a = 1,b = 2和c = 3,
但在Chrome中不起作用。 这是一个Chrome的错误或
这是不是有效的JavaScript代码? (我没有find它的JavaScript参考)

我怎样才能修改这个代码,使其适用于Chrome,损害最小?
(我真的不喜欢写a = arr [0]; b = arr [1] …或者和arr.shift()一样)

PS这只是一个示例代码,在真实的代码
我从我的代码之外的地方得到了arr数组

这是JavaScript 1.7的一个新function,称为解构赋值 :

解构赋值可以使用反映数组和对象文字构造的语法从数组或对象中提取数据。

对象和数组文字expression式提供了一种简单的方法来创build特定的数据包。 一旦你创build了这些数据包,你可以用任何你想要的方式来使用它们。 你甚至可以从函数中返回它们。

解构赋值可以做的一件特别有用的事情是在一个语句中读取整个结构,尽pipe可以用它们做很多有趣的事情,如下面的例子部分所示。

例如,可以使用解构赋值来交换值:

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

这种function与Perl和Python等语言中的function类似。

不幸的是,根据这个版本的表 ,JavaScript 1.7还没有在Chrome中实现。 但它应该在那里:

  • 火狐2.0+
  • IE 9
  • 歌剧11.50。

在这个jsfiddle中尝试一下: http : //jsfiddle.net/uBReg/

我在Chrome(失败),IE 8(失败)和FireFox 5(根据wiki表工作)上testing了这一点。

@Justin已经回答了Javascript 1.7。 以下是在广泛的浏览器中进行模拟的试验:

 function assign(arr, vars) { var x = {}; var num = Math.min(arr.length, vars.length); for (var i = 0; i < num; ++i) { x[vars[i]] = arr[i]; } return x; } var arr = [1, 2, 3]; var x = assign(arr, ['a', 'b', 'c']); var z = xa + xb + xc; // z == 6 

我不知道它是多么有用。