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?
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
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.
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"
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.
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
©2020 All rights reserved.