Несколько назначений в javascript? Что [a, b, c] = [1, 2, 3]; имею в виду?

Для проекта разработчик отправил нам файл .js с кодом, подобным этому:

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

[a,b,c] = myList;

Он работает в Opera 10.30, Firefox 3.6.x, но он не подходит для Opera 10.60 и Chrome.

Просто любопытство, есть ли у вас ссылка или ссылка, в которой говорится, что этот код соответствует стандарту JS/ECMA или нет?

Как вы думаете?

Ответ 3

В Opera более ранний "futhark" механизм JavaScript поддерживал это, но он был сброшен в новый движок "каракан", потому что он был нестандартным, не требуемым в Интернете, и усложнял бы новую и очень быструю реализацию.

Ответ 4

JavaScript, доступный во всех браузерах, не поддерживает ничего, кроме variable= и object.property= в левой части выражений.

Его спецификация настолько ужасна, что я не буду ссылаться на нее.

Ответ 5

Здесь обновление по теме: от JavaScript версии 1.7, назначения деструктуризации поддерживаются всеми основными браузерами: см. совместимость с браузером здесь.

Синтаксис назначения деструктуризации - это выражение JavaScript, которое позволяет распаковывать значения из массивов или свойств из объектов в разные переменные.

- Документация MDN

Итак, вы можете сделать:

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

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