Дэвид Флэнаган - JavaScript. Подробное руководство, 6-е издание

Здесь есть возможность читать онлайн «Дэвид Флэнаган - JavaScript. Подробное руководство, 6-е издание» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: СПб, Год выпуска: 2012, ISBN: 2012, Издательство: Символ-Плюс, Жанр: Базы данных, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

JavaScript. Подробное руководство, 6-е издание: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «JavaScript. Подробное руководство, 6-е издание»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

C момента выхода первого издания в 1996 году книга "JavaScript: Подробное руководство" превратилась в библию программистов на JavaScript. За эти годы было издано более 500000 экземпляров, и веб-разработчики по-прежнему с восторгом отзываются о ней.
Эта книга - одновременно и руководство программиста, и полноценный справочник по базовому языку JavaScript и клиентским прикладным интерфейсам, предоставляемым веб-броузерами.

JavaScript. Подробное руководство, 6-е издание — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «JavaScript. Подробное руководство, 6-е издание», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Генератор - это объект, представляющий текущее состояние функции-генератора. Он определяет метод next(), вызов которого возобновляет выполнение функции-генератора и позволяет продолжить ее выполнение, пока не будет встречена следующая инструкция yield . Когда это происходит, значение в инструкции yield в функции-генераторе становится возвращаемым значением метода next() генератора. Если функция-генератор завершает свою работу вызовом инструкции return или в результате достижения конца своего тела, метод next() генератора возбуждает исключение StopIteration .

Тот факт, что генераторы имеют метод next(), который может возбуждать исключение StopIteration , явственно говорит о том, что они являются итераторами. [22] Генераторы иногда называют «итераторами-генераторами», чтобы отличить их от создающих их функций-генераторов. В этой главе вместо термина «итераторы-генераторы» мы будем использовать термин «генераторы». В других источниках вы можете встретить термин «генератор», обозначающий одновременно и функции-генераторы, и итераторы-генераторы. В действительности они являются итерируемыми итераторами, т. е. они могут использоваться в циклах for/in . Следующий пример демонстрирует, насколько просто создавать функции-генераторы и выполнять итерации по значениям, которые они возвращают с помощью инструкции yield :

// Определение функции-генератора для выполнения итераций

// по целым числам в определенном диапазоне

function range(min, max) {

for(let і = Math.ceil(min); і <= max; i++) yield i;

}

// Вызвать функцию-генератор, чтобы получить генератор, и выполнить итерации по нему,

fог(let n in range(3.8)) console.log(n); // Выведет числа от 3 до 8.

Функции-генераторы могут никогда не завершаться. Каноническим примером использования генераторов является воспроизведение последовательности чисел Фибоначчи:

// Функция-генератор, которая воспроизводит последовательность чисел Фибоначчи

function fibonacci() {

let х = 0, у = 1;

while(true) {

yield у;

[х,у] = [у,х+у];

}

}

// Вызвать функцию-генератор, чтобы получить генератор,

f = fibonacci();

// Использовать генератор как итератор, вывести первые 10 чисел Фибоначчи,

for(let і = 0; і < 10; і++) console.log(f.next());

Обратите внимание, что функция-генератор fibonacci() никогда не завершится. По этой причине создаваемый ею генератор никогда не возбудит исключение StopIteration . Поэтому, вместо того чтобы использовать его как итерируемый объект в цикле for/in и попасть в бесконечный цикл, мы используем его как итератор и явно вызываем его метод next() десять раз. После того как фрагмент выше будет выполнен, генератор f по-прежнему будет хранить информацию о состоянии функции-генератора. Если в программе не требуется далее хранить эту информацию, ее можно освободить вызовом метода close() объекта f:

f.close();

При вызове метода close() генератора производится завершение связанной с ним функции-генератора, как если бы она выполнила инструкцию return в той точке, где ее выполнение было приостановлено. Если это произошло в блоке try , автоматически будет выполнен блок finally перед тем, как close() вернет управление. Метод close() никогда не возвращает значение, но если блок finally возбудит исключение, оно продолжит свое распространение из вызова close().

Генераторы часто бывает удобно использовать для последовательной обработки данных - элементов списка, строк текста, лексем в лексическом анализаторе и т.д. Генераторы можно объединять в цепочки, подобно конвейеру команд в Unix. Самое интересное в этом подходе заключается в том, что он следует принципу отложенных вычислений: значения «извлекаются» из генератора (или из конвейера генераторов) по мере необходимости, а не все сразу. Эту особенность демонстрирует пример 11.1.

Пример 11.1. Конвейер генераторов

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «JavaScript. Подробное руководство, 6-е издание»

Представляем Вашему вниманию похожие книги на «JavaScript. Подробное руководство, 6-е издание» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «JavaScript. Подробное руководство, 6-е издание»

Обсуждение, отзывы о книге «JavaScript. Подробное руководство, 6-е издание» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x