Devinora
@Devinora
Front-end web development

Деструктуризация?

Подскажите по какому алгоритму происходит деструктурирующее присваивание.

1.
var {a,aa,...aaa} = [2, 4, 23];

console.log(a, aa, aaa);

undefined undefined {0: 2, 1: 4, 2: 23}


2.

var [a,aa,...aaa] = {a:2, aa: 4, aaa: 23};

console.log(a, aa, aaa);

undefined undefined {0: 2, 1: 4, 2: 23}

VM176:1 Uncaught TypeError: {(intermediate value)(intermediate value)(intermediate value)} is not iterable
    at <anonymous>:1:21


Объясните как работает алгоритм присваивания.
Безусловно я ознакомился о деструктуризации тут и тут и еще тут.
  • Вопрос задан
  • 551 просмотр
Пригласить эксперта
Ответы на вопрос 2
var [] = value для массивов
var {} = value для объектов

... берет весь неперечисленный остаток в указанную переменную (spread)

Правильный код твоих вариантов:
var [a,aa,...aaa] = [2, 4, 23];
console.log(a, aa, aaa);

var {a,aa,...aaa} = {a:2, aa: 4, aaa: 23};
console.log(a, aa, aaa);
Ответ написан
youngmysteriouslight
@youngmysteriouslight
ТК, ТТ, JS, FP, WM
Babel немного проясняет этот вопрос.

Как мне кажется, на данный момент поведение в таких случаях зависит от интерпретатора. Если интересует поведение, которое должно быть по спецификации ES6, открывай её и читай там.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы