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 Инструмент поиска Создание каталога Публичное пространство в сети Проект: сайт по обмену опытом Хранение на диске Сброс поля комментариев