Page 203 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 203
ГЛАВА 2
1
р а
И те торы и г е н е р а т о р ы
В спецификацию ЕSб введено две очень важные новые концепции: итераторы
(iterator) и генераторы (generator). Г е нераторы связаны с итераторами, поэтому да
вайте начнем с итераторов.
Итератор напоминает закладку: он помогает следить, где вы находитесь. Массив -
пример итерируемого (iteraЫe) объекта: он содержит множество элементов (по аналогии
со страницами в книге) и может предоставить итератор (который похож на закладку).
Давайте сделаем эту аналогию конкретней: предположим, что у вас есть массив book
(книга), каждый элемент которого - строка, представляющая страницу. Формату такой
книги лучше всего соответствует стишок "Twinkle, T w inkle, Little Bat" (Крокодильчики
мои, цветики речные!1) из Алисы в стране чудес Льюиса Кэрролла (представьте, что у вас
детская книжка, на каждой странице которой расположена всего одна строчка).
const book = [
e
l
" T wink e , twinkl , l i ttle ba ! " ,
t
"How I wonder what yo ' r e at ! " ,
u
"Up above the world you fly, " ,
"Like а tea tray in the s k y . " ,
t
" T winkle, twinkle, l i ttle ba ! " ,
u
"How I wonder what yo ' r e at ! " ,
] ;
Теперь, когда у нас есть массив book, мы можем получить итератор, используя его
метод values.
o
const it = bo k . values ( ) ;
Продолжая нашу аналогию, итератор (обычно сокращаемый как it) является за
кладкой, но это закладка только для конкретной книги. Кроме того, мы ее еще ни
куда не поместили и мы еще не начали читать книгу. Чтобы "начать читать", необхо
дим вызов метода next итератора, который возвращает объект с двумя свойствами:
value, который содержит текущую "страницу", и done, которому присваивается зна
t
чение r ue после того, как вы прочитаете последнюю страницу. Наша книга - дли
ной лишь шесть страниц, поэтому довольно просто продемонстрировать, как мы
можем прочитать ее полностью.
1 Пересказ с английского Бориса Заходера. - Примеч. ред.

