Несколько назначений в 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 или нет?
Как вы думаете?
Ответы
Ответ 1
Это функция, называемая назначение деструктурирования, которая была добавлена в JavaScript 1.7 и ECMAScript 6. Она не является частью ECMAScript 5: Что такое поддержка кросс-браузера для новых функций JavaScript 1.7? В частности, понимание массива и "let " Заявление
Ответ 2
Это назначение деструктуризации, доступное в Javascript 1.7 (mozilla) и некоторых новых браузерах: http://www.robertnyman.com/javascript/javascript-1.7.html#destructuring-assignment
Ответ 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"