36

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?

2
  • I'm pleased to find that the feature has been introduced to desktop Chrome since Chrome version 49 (chromestatus.com/feature/4588790303686656 ). I've verified it in my Chrome extension code github.com/chuan6/webXi/commit/… . Commented Jul 12, 2016 at 0:40
  • 3
    In case somebody comes here wondering, you can do var [a,b,c] = myList; with the same effect. Commented May 18, 2017 at 0:26

4 Answers 4

26

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

Sign up to request clarification or add additional context in comments.

Comments

14

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"

Comments

5

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

Comments

2

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.