Eloquent JavaScript, 3rd Edition: A Modern Introduction to Programming 9781593279509, 1593279507

Completely revised and updated, this best-selling introduction to programming in JavaScript focuses on writing real appl

205 80 4MB

Russian Pages 474 [482] Year 2018

Report DMCA / Copyright

DOWNLOAD FILE

Eloquent JavaScript, 3rd Edition: A Modern Introduction to Programming
 9781593279509, 1593279507

Table of contents :
Содержание
Введение
О программировании
Почему так важен язык программирования
Что такое JavaScript
Код и что с ним делать
Обзор этой книги
Условные обозначения
1. Значения, типы и операторы
Значения
Числа
Арифметика
Специальные числа
Строки
Унарные операции
Логические значения
Сравнение
Логические операторы
Пустые значения
Автоматическое преобразование типов
Упрощенное вычисление логических операторов
Резюме
2. Структура программы
Выражения и инструкции
Привязки
Имена привязок
Окружение
Функции
Функция console.log
Возвращение значений
Последовательность выполнения
Условное выполнение
Циклы while и do
Код с отступами
Циклы for
Принудительный выход из цикла
Быстрое обновление привязок
Диспетчеризация по значению с помощью switch
Использование прописных букв
Комментарии
Резюме
Упражнения
Построение треугольника в цикле
FizzBuzz
Шахматная доска
3. Функции
Определение функции
Привязки и области видимости
Вложенные области видимости
Функции как значения
Декларативная запись
Стрелочные функции
Стек вызовов
Необязательные аргументы
Замыкание
Рекурсия
Разрастание функций
Функции и побочные эффекты
Резюме
Упражнения
Минимум
Рекурсия
Подсчет букв
4. Структуры данных: объекты и массивы
Белка-оборотень
Наборы данных
Свойства
Методы
Объекты
Изменяемость
Дневник оборотня
Вычисление корреляции
Перебор массива в цикле
Окончательный анализ
Дальнейшая массивология
Строки и их свойства
Дополнительные параметры
Объект Math
Деструктурирование
JSON
Резюме
Упражнения
Сумма диапазона
Массив в обратном порядке
Список
Глубокое сравнение
5. Функции высшего порядка
Абстракции
Абстрагирование повторов
Функции высшего порядка
Набор данных о шрифтах
Фильтрация массивов
Преобразование и отображение
Суммирование с помощью reduce
Компонуемость
Строки и коды символов
Распознавание текста
Резюме
Упражнения
Свертка
Ваш собственный цикл
Метод every
Доминирующее направление письма
6. Тайная жизнь объектов
Инкапсуляция
Методы
Прототипы
Классы
Запись классов
Переопределение производных свойств
Словари
Полиморфизм
Символы
Интерфейс итератора
Геттеры, сеттеры и статические методы
Наследование
Оператор instanceof
Резюме
Упражнения
Тип вектора
Группы
Итерируемые группы
Заимствование метода
7. Проект: робот
Деревня Медоуфилд
Задача
Постоянные данные
Моделирование
Маршрут почтового грузовика
Поиск пути
Упражнения
Измерение параметров робота
Эффективность робота
Постоянная группа
8. Ошибки и дефекты
Язык
Строгий режим
Типы
Тестирование
Отладка
Распространение ошибок
Исключения
Подчищаем за исключениями
Выборочный перехват исключений
Утверждения
Резюме
Упражнения
Повторная попытка
Запертый ящик
9. Регулярные выражения
Создание регулярных выражений
Проверка на соответствия
Множества символов
Повторяющиеся части шаблона
Группировка подвыражений
Соответствия и группы
Класс Date
Границы слов и строк
Выбор шаблонов
Механизм поиска соответствия
Поиск с возвратом
Метод replace
О жадности
Динамическое создание объектов RegExp
Метод search
Свойство lastIndex
Циклический поиск соответствий
Анализ INI-файла
Интернациональные символы
Резюме
Упражнения
Стиль цитирования
Снова числа
10. Модули
Зачем нужны модули
Пакеты
Импровизированные модули
Выполнение данных как кода
CommonJS
Модули ECMAScript
Сборка и комплектация
Структура модулей
Резюме
Упражнения
Модульный робот
Модуль Roads
Циклические зависимости
11. Асинхронное программирование
Асинхронность
Технологии воронов
Обратные вызовы
Промисы
Сбои
Сетевые трудности
Коллекции промисов
Лавина в сети
Маршрутизация сообщений
Асинхронные функции
Генераторы
Цикл событий
Дефекты асинхронного программирования
Резюме
Упражнения
Где скальпель?
Построение Promise.all
12. Проект: язык программирования
Синтаксический анализ
Интерпретатор
Специальные формы
Среда выполнения
Функции
Компиляция
Немного мошенничества
Упражнения
Массивы
Замыкание
Комментарии
Исправление области видимости
13. JavaScript и браузер
Интернет и другие сети
Web
HTML
HTML и JavaScript
В «песочнице»
Совместимость и браузерные войны
14. Объектная модель документа
Структура документа
Деревья
Стандарт
Перемещения по дереву
Поиск элементов
Изменение документа
Создание узлов
Атрибуты
Разметка
Стили
Каскадные стили
Селекторы запросов
Позиционирование и анимация
Резюме
Упражнения
Построение таблицы
Элементы по имени тега
Кошка и ее шляпа
15. Обработка событий
Обработчики событий
События и DOM-узлы
Объекты событий
Распространение событий
Действия по умолчанию
События клавиш
События мыши
Щелчки кнопкой мыши
Движения мыши
Сенсорные события
События прокрутки
События фокуса
Событие загрузки
События и цикл событий
Таймеры
Устранение повторных срабатываний
Резюме
Упражнения
Воздушный шарик
След мыши
Вкладки
16. Проект: игровая платформа
Игра
Технология
Уровни
Чтение уровня
Акторы
Инкапсуляция как бремя
Рисование
Движение и столкновения
Изменение акторов
Отслеживание нажатий клавиш
Игра в действии
Упражнения
Игра окончена
Приостановка игры
Монстр
17. Рисование на холсте
SVG
Элемент canvas
Линии и поверхности
Пути
Кривые
Рисование круговой диаграммы
Текст
Изображения
Преобразования
Сохранение и отмена преобразований
Возвращаясь к игре
Выбор графического интерфейса
Резюме
Упражнения
Фигуры
Круговая диаграмма
Прыгающий шарик
Заранее рассчитанное зеркальное отражение
18. HTTP и формы
Протокол
Браузеры и HTTP
Fetch
HTTP-«песочница»
Цените HTTP по достоинству
HTTPS и безопасность
Поля форм
Фокус
Отключенные поля
Форма в целом
Текстовые поля
Флажки и переключатели
Поля выбора
Поля выбора файлов
Хранение данных на стороне клиента
Резюме
Упражнения
Согласование содержимого
Среда выполнения JavaScript
Игра «Жизнь» Конвея
19. Проект: растровый графический редактор
Компоненты
Состояние
Построение DOM
Холст
Приложение
Инструменты рисования
Сохранение и загрузка
История действий
Давайте порисуем
Почему это так сложно?
Упражнения
Клавиатурные привязки
Эффективное рисование
Круги
Правильные линии
20. Node.js
Основы
Команда node
Модули
Установка с помощью NPM
Файлы пакетов
Версии
Модуль файловой системы
Модуль HTTP
Потоки
Файловый сервер
Резюме
Упражнения
Инструмент поиска
Создание каталога
Публичное пространство в сети
21. Проект: сайт по обмену опытом
Структура
Длительный опрос
HTTP-интерфейс
Сервер
Маршрутизация
Обслуживание файлов
Беседы как ресурсы
Поддержка длительных опросов
Клиент
HTML
Действия
Визуализация компонентов
Опросы
Приложение
Упражнения
Хранение на диске
Сброс поля комментариев
Советы по выполнению упражнений
Структура программы
Построение треугольника в цикле
FizzBuzz
Шахматная доска
Функции
Минимум
Рекурсия
Подсчет букв
Структуры данных: объекты и массивы
Сумма диапазона
Массив в обратном порядке
Список
Глубокое сравнение
Функции высшего порядка
Метод every
Доминирующее направление письма
Тайная жизнь объектов
Тип вектора
Группы
Итерируемые группы
Заимствование метода
Проект: робот
Измерение параметров робота
Эффективность робота
Постоянная группа
Ошибки и дефекты
Повторная попытка
Запертый ящик
Регулярные выражения
Стиль цитирования
Снова числа
Модули
Модульный робот
Модуль Roads
Циклические зависимости
Асинхронное программирование
Где скальпель?
Построение Promise.all
Проект: язык программирования
Массивы
Замыкание
Комментарии
Изменение области видимости
Объектная модель документа
Построение таблицы
Элементы по имени тега
Кошка и ее шляпа
Обработка событий
Воздушный шарик
След мыши
Вкладки
Проект: игровая платформа
Приостановка игры
Монстр
Рисование на холсте
Фигуры
Круговая диаграмма
Прыгающий шарик
Заранее рассчитанное зеркальное отражение
HTTP и формы
Согласование содержимого
Среда выполнения JavaScript
Игра «Жизнь» Конвея
Проект: растровый графический редактор
Клавиатурные привязки
Эффективное рисование
Круги
Правильные линии
Node.js
Инструмент поиска
Создание каталога
Публичное пространство в сети
Проект: сайт по обмену опытом
Хранение на диске
Сброс поля комментариев

Polecaj historie