Книга: JavaScript. Подробное руководство, 6-е издание

11.4.1. Цикл for/each

11.4.1. Цикл for/each

Цикл for/each - это новая инструкция цикла, определяемая стандартом Е4Х. Е4Х (ECMAScript for XML) - это расширение языка, позволяющее употреблять в программах на языке JavaScript теги языка XML и предоставляющее функции для работы с данными в формате XML. Стандарт Е4Х реализован далеко не во всех веб-броузерах, но он поддерживается реализацией JavaScript проекта Mozilla, начиная с версии 1.6 (в Firefox 1.5). В этом разделе мы рассмотрим только цикл for/ each и особенности его использования с обычными объектами, не имеющими отношения к XML. Остальные подробности о Е4Х приводятся в разделе 11.7.

Цикл for each напоминает цикл for/in. Однако вместо итераций по свойствам объекта он выполняет итерации по значениям свойств:

let о = {one: 1, two: 2, three: 3}
for(let p in o) console.log(p);       // for/in: выведет 'one', 'two', 'three'
for each (let v in o) console.log(v); // for/each: выведет 1, 2, 3

При использовании с массивами цикл for/each выполняет итерации по элементам (а не по индексам) массива. Обычно он перечисляет их в порядке следования числовых индексов, но в действительности такой порядок не определяется стандартом и не является обязательным:

а = ['один', два', 'три'];
for(let р in a) console.log(p); // Выведет индексы массива 0, 1, 2
for each (let v in a) console.log(v); // Выведет элементы 'один', 'два', три'

Обратите внимание, что область применения цикла for/each не ограничивается элементами массива - он может перечислять значения перечислимых свойств объекта, включая перечислимые методы, унаследованные объектом. По этой причине обычно не рекомендуется использовать цикл for/each для работы с объектами. Это особенно верно для программ, которые должны выполняться под управлением версий интерпретаторов JavaScript до ECMAScript 5, в которых невозможно сделать пользовательские свойства и методы неперечислимыми. (Смотрите аналогичное обсуждение цикла for/in в разделе 7.6.)

Оглавление книги


Генерация: 0.055. Запросов К БД/Cache: 0 / 2
поделиться
Вверх Вниз