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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

// Функция, возвращающая итератор;

function counter(start) {

let nextValue = Math.round(start); // Частная переменная итератора

return { next: function() {

return nextValue++; }

}; // Вернуть итератор

}

let serialNumberGenerator = counter(1000);

let sn1 = serialNumberGenerator.next(); // 1000

let sn2 = serialNumberGenerator.next(); // 1001

При работе с конечными коллекциями метод next() итератора возбуждают исключение Stoplteration , когда в коллекции не остается значений для выполнения очередной итерации. Stoplteration - это свойство глобального объекта в JavaScript 1.7. Его значением является обычный объект (без собственных свойств), зарезервированный специально для нужд завершения итераций. Обратите внимание, что Stoplteration не является функцией-конструктором, таким как TypeErгог() или RangeError(). Ниже приводится пример метода rangelter(), возвращающего итератор, который выполняет итерации по целым числам в заданном диапазоне:

// Функция, возвращающая итератор диапазона целых чисел

function rangelter(first, last) {

let nextValue = Math.ceil(first);

return {

next: function() {

if (nextValue > last) throw Stoplteration;

return nextValue++;

}

};

}

// Пример неудобной реализации итераций с помощью итератора диапазона,

let r = rangelter(1.5); // Получить объект-итератор

while(true) { // Теперь использовать его в цикле

try {

console.log(г.next()); // Вызвать метод next() итератора

catch(e) {

if (е == Stoplteration) break; // Завершить цикл по Stoplteration else throw e;

}

}

Обратите внимание, насколько неудобно использовать объект-итератор в цикле из-за необходимости явно обрабатывать исключение Stoplteration . Из-за этого неудобства итераторы редко используются на практике непосредственно. Чаще используются итерируемые объекты. Итерируемый объект представляет коллекцию значений, по которым можно выполнять итерации. Итерируемый объект должен определять метод с именем __iterator__() (с двумя символами подчеркивания в начале и в конце), возвращающий объект-итератор для коллекции.

В JavaScript 1.7 в цикл for/in была добавлена возможность работы с итерируемыми объектами. Если значение справа от ключевого слова in является итерируемым объектом, то цикл for/in автоматически вызовет его метод __iterator__(), чтобы получить объект-итератор. Затем он будет вызывать метод next() итератора, присваивать возвращаемое им значение переменной цикла и выполнять тело цикла. Цикл for/in сам обрабатывает исключение Stoplteration , и оно никогда не передается программному коду, выполняемому в цикле. Пример ниже определяет функцию range(), возвращающую итерируемый объект (а не итератор), который представляет диапазон целых чисел. Обратите внимание, насколько проще выглядит цикл for/in при использовании итерируемого объекта диапазона по сравнению с циклом while , в котором используется итератор диапазона.

// Вернуть объект, представляющий диапазон.

// Границы диапазона не изменяются

// и хранятся в замыкании.

// Диапазоны могут проверять вхождение, max;

// Возвращает итерируемый объект, представляющий диапазон чисел

function range(min,max) { return {

get min() { return min; },

get max() { return max; },

includes: function(x) {

return min <= x && x <= max;

},

toString: function() { // Диапазоны имеют строковое представление,

return "[" + min + "," + max + "]";

},

__iterator__: function() { // Возможно выполнять итерации по диапазону

let val = Math.ceil(min); // Сохранить текущ. позицию в замыкании.

return { // Вернуть объект-итератор.

next: function() { // Вернуть следующее число в диапазоне.

if (val > max) // Если достигнут конец - прервать итерации

throw StopIteration;

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

Интервал:

Закладка:

Сделать

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

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


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

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

x