的JavaScript.将数组值分配给多个变量?

tsd*_*sds 78 javascript arrays variable-assignment

var a,b,c;
var arr = [1,2,3];
[a,b,c] = arr;
Run Code Online (Sandbox Code Playgroud)

此代码在Firefox中完美运行,导致a = 1,b = 2和c = 3,
但它在Chrome中不起作用.它是Chrome错误还是
无效的javascript代码?(我没能在javascript参考中找到它)

如何修改此代码以使其适用于Chrome,对其造成的损害最小?
(我真的不想写a = arr [0]; b = arr [1] ...或者一直使用arr.shift()

PS这只是一个示例代码,在实际代码中
我从代码之外的某处获取arr数组

Jus*_*ier 92

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

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

对象和数组文字表达式提供了一种创建临时数据包的简便方法.一旦创建了这些数据包,就可以按照自己的方式使用它们.你甚至可以从函数中返回它们.

使用解构赋值可以做的一件特别有用的事情是在单个语句中读取整个结构,尽管您可以使用它们执行许多有趣的操作,如下面的示例部分所示.

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

var a = 1;
var b = 3;
[a, b] = [b, a];
Run Code Online (Sandbox Code Playgroud)

此功能类似于Perl和Python等语言中的功能.

不幸的是,根据此版本表,JavaScript 1.7尚未在Chrome中实现.但它应该存在于:

  • FireFox 2.0+
  • IE 9
  • 歌剧11.50.

在这个jsfiddle中试试吧:http://jsfiddle.net/uBReg/

我在Chrome(失败),IE 8(失败)和FireFox 5(根据wiki表工作)上测试了这个.

  • 立即声明和赋值:`let [a, b] = [1, 2];` (2认同)

Jir*_*riz 8

只有Javascript 1.7才有可能由@Justin回答.这是一个在广泛的浏览器中模拟它的试验:

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 = x.a + x.b + x.c;  // z == 6
Run Code Online (Sandbox Code Playgroud)

我不知道它有多有用.