Multiple assignment in javascript? What does [a,b,c] = [1, 2, 3]; mean?

不想你离开。 提交于 2019-11-26 01:47:45

问题


For a project a developer sent us a .js file with code similar to this:

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

[a,b,c] = myList;

It works in Opera 10.30, Firefox 3.6.x but it\'s not ok for Opera 10.60 and Chrome.

It\'s just curiosity, do you have any reference or link that says this code is compliant to JS/ECMA standard or not?

What do you think?


回答1:


This is a feature called destructuring assignment, which was added in JavaScript 1.7 and ECMAScript 6. It is not a part of ECMAScript 5: What is cross browser support for JavaScript 1.7's new features? Specifically array comprehensions and the "let" statement




回答2:


This is destructuring assignment, available in Javascript 1.7 (mozilla) and some newer browsers: http://www.robertnyman.com/javascript/javascript-1.7.html#destructuring-assignment




回答3:


Here’s an update on the subject: as of JavaScript version 1.7, destructuring assignments are supported by all major browsers: see browser compatibility.

The destructuring assignment syntax is a JavaScript expression that makes it possible to unpack values from arrays, or properties from objects, into distinct variables.

– MDN’s documentation

So you can do:

let a, b;
[a, b] = ["Hello", "World"];

console.log(a); // "Hello"
console.log(b); // "World"

Or simply in one line if you're defining the variables:

let [a, b] = ["Hello", "World"];

console.log(a); // "Hello"
console.log(b); // "World"



回答4:


Opera's older "futhark" JavaScript engine had support for this, but it was dropped in the new engine "carakan", because it was non-standard, not required on the web, and would complicate the new and very fast implementation.



来源:https://stackoverflow.com/questions/3986348/multiple-assignment-in-javascript-what-does-a-b-c-1-2-3-mean

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!