开发者

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

开发者 https://www.devze.com 2023-01-20 23:16 出处:网络
For a project, a developer sent us a JS file with code similar to this: var myList = [ 1, 2, 3 ]; var a, b, c;

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, and Firefox 3.6.x, but it’s not okay for Opera 10.60, and Chrome.

It’s just curiosity: do you have any reference or link that says this code is compliant to the ECMAScript standard or not?


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


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"


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


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号