JavaScript. Подробное руководство, 6-е издание, стр. 150
<b> type: "расширение",</b><b> impl: [{engine: "spidermonkey", version: 1.7},</b><b> {engine: "rhino", version: 1.7}]</b><b>};</b><b>// Использовать присваивание с разложением для извлечения </b><b>// четырех значений из структуры данных</b><b>let ({name:feature, </b><b>impl: [{engine:impl1, version:v1},{engine:impl2}]} = data) {</b><b> console.log(feature); // Выведет "присваивание с разложением"</b><b> console.log(impl1); // Выведет "spidermonkey"</b><b> console.log(v1); // Выведет 1.7</b><b> console.log(impl2); // Выведет "rhino"</b><b>}</b>Имейте в виду, что подобные вложенные инструкции присваивания с разложением могут превратить программный код в трудночитаемые дебри, вместо того чтобы упростить его. Однако есть одна интересная закономерность, которая поможет вам разобраться в самых сложных случаях. Представьте сначала обычное присваивание (с единственным значением). После того как присваивание будет выполнено, переменную слева от оператора присваивания можно взять и использовать как выражение, которое будет возвращать присвоенное значение. Мы говорили, что в инструкции присваивания с разложением слева указывается синтаксическая конструкция, напоминающая литерал массива или объекта. Но обратите внимание, что после выполнения присваивания с разложением программный код слева, который выглядит как литерал массива или объекта, действительно будет интерпретироваться как обычный литерал массива или объекта: все необходимые переменные будут определены, и вы сможете копировать текст слева от знака «равно» и использовать его в своей программе как массив или объект.
11.4. Итерации
Проектом Mozilla в расширение JavaScript были добавлены новые способы выполнения итераций, включая цикл
<b>for each</b>11.4.1. Цикл for/each
Цикл
<b>for/each</b><b>for/ each</b>Цикл
<b>for each</b><b>for/in</b><b>let о = {one: 1, two: 2, three: 3}</b><b>for(let p in o) console.log(p); // for/in: выведет 'one', 'two', 'three'</b><b>for each (let v in o) console.log(v); // for/each: выведет 1, 2, 3</b>При использовании с массивами цикл
<b>for/each</b><b>а = ['один', два', 'три'];</b><b>for(let р in a) console.log(p); // Выведет индексы массива 0, 1, 2</b><b>for each (let v in a) console.log(v); // Выведет элементы 'один', 'два', три'</b>Обратите внимание, что область применения цикла
<b>for/each</b><b>for/each</b><b>for/in</b>11.4.2. Итераторы
В версии JavaScript 1.7 цикл
<b>for/in</b><b>for/in</b><b>for/in</b>Итератором называется объект, который позволяет выполнять итерации по некоторой коллекции значений и хранит информацию о текущей «позиции» в коллекции. Итератор должен иметь метод
<b>next().</b><b>next()</b><b>counter(),</b><b>next().</b><b>// Функция, возвращающая итератор;</b><b>function counter(start) {</b><b> let nextValue = Math.round(start); // Частная переменная итератора</b><b> return { next: function() {</b><b> return nextValue++; }</b><b> }; // Вернуть итератор</b><b>}</b>