Оглавление
Введение ..............................................................................................................17
О программировании.........................................................................................18
Почему так важен язык программирования .......................................................20
Что такое JavaScript...........................................................................................23
Код и что с ним делать......................................................................................24
Обзор этой книги...............................................................................................25
Условные обозначения ......................................................................................26
Глава 1. Значения, типы и операторы ............................................................... 27
Значения ...........................................................................................................28
Числа ................................................................................................................28
Арифметика.......................................................................................................30
Специальные числа ...........................................................................................31
Строки...............................................................................................................31
Унарные операции.............................................................................................33
Логические значения.........................................................................................34
Сравнение..................................................................................................34
Логические операторы ...............................................................................35
Пустые значения ...............................................................................................36
Автоматическое преобразование типов .............................................................36
Упрощенное вычисление логических операторов ..............................................38
Резюме ..............................................................................................................39
Глава 2. Структура программы .......................................................................... 40
Выражения и инструкции...................................................................................40
Привязки ...........................................................................................................41
Имена привязок.................................................................................................43
Окружение ........................................................................................................44
Функции ............................................................................................................44
Функция console.log...........................................................................................45
Возвращение значений......................................................................................45
Оглавление 7
Последовательность выполнения ......................................................................46
Условное выполнение........................................................................................47
Циклы while и do ...............................................................................................49
Код с отступами.................................................................................................51
Циклы for ..........................................................................................................51
Принудительный выход из цикла.......................................................................52
Быстрое обновление привязок...........................................................................53
Диспетчеризация по значению с помощью switch..............................................54
Использование прописных букв.........................................................................55
Комментарии.....................................................................................................55
Резюме ..............................................................................................................56
Упражнения.......................................................................................................57
Построение треугольника в цикле..............................................................57
FizzBuzz ......................................................................................................57
Шахматная доска .......................................................................................58
Глава 3. Функции .............................................................................................. 59
Определение функции.......................................................................................59
Привязки и области видимости..........................................................................61
Вложенные области видимости..........................................................................62
Функции как значения .......................................................................................63
Декларативная запись .......................................................................................63
Стрелочные функции.........................................................................................64
Стек вызовов.....................................................................................................65
Необязательные аргументы...............................................................................66
Замыкание.........................................................................................................68
Рекурсия............................................................................................................69
Разрастание функций ........................................................................................73
Функции и побочные эффекты ..........................................................................75
Резюме ..............................................................................................................76
Упражнения.......................................................................................................77
Минимум ....................................................................................................77
Рекурсия ....................................................................................................77
Подсчет букв..............................................................................................78
Глава 4. Структуры данных: объекты и массивы ................................................ 79
Белка-оборотень................................................................................................80
Наборы данных .................................................................................................80
Свойства............................................................................................................81
Методы..............................................................................................................82
Объекты ............................................................................................................83
Изменяемость....................................................................................................86
Дневник оборотня .............................................................................................88
Вычисление корреляции....................................................................................90
8 Оглавление
Перебор массива в цикле ..................................................................................91
Окончательный анализ......................................................................................92
Дальнейшая массивология.................................................................................94
Строки и их свойства.........................................................................................96
Дополнительные параметры..............................................................................97
Объект Math ......................................................................................................98
Деструктурирование........................................................................................ 100
JSON................................................................................................................ 101
Резюме ............................................................................................................ 102
Упражнения..................................................................................................... 103
Сумма диапазона...................................................................................... 103
Массив в обратном порядке ..................................................................... 103
Список ..................................................................................................... 104
Глубокое сравнение ................................................................................. 105
Глава 5. Функции высшего порядка ................................................................. 106
Абстракции...................................................................................................... 107
Абстрагирование повторов .............................................................................. 108
Функции высшего порядка............................................................................... 109
Набор данных о шрифтах ................................................................................ 110
Фильтрация массивов...................................................................................... 112
Преобразование и отображение ...................................................................... 112
Суммирование с помощью reduce .................................................................... 113
Компонуемость ................................................................................................ 114
Строки и коды символов.................................................................................. 116
Распознавание текста...................................................................................... 118
Резюме ............................................................................................................ 120
Упражнения..................................................................................................... 120
Свертка.................................................................................................... 120
Ваш собственный цикл ............................................................................. 120
Метод every.............................................................................................. 121
Доминирующее направление письма........................................................ 121
Глава 6. Тайная жизнь объектов ..................................................................... 122
Инкапсуляция.................................................................................................. 122
Методы............................................................................................................ 123
Прототипы....................................................................................................... 125
Классы............................................................................................................. 126
Запись классов ................................................................................................ 128
Переопределение производных свойств .......................................................... 129
Словари........................................................................................................... 130
Полиморфизм.................................................................................................. 132
Символы.......................................................................................................... 133
Интерфейс итератора ...................................................................................... 134
Оглавление 9
Геттеры, сеттеры и статические методы.......................................................... 137
Наследование.................................................................................................. 138
Оператор instanceof......................................................................................... 140
Резюме ............................................................................................................ 140
Упражнения..................................................................................................... 141
Тип вектора ............................................................................................. 141
Группы..................................................................................................... 142
Итерируемые группы................................................................................ 142
Заимствование метода ............................................................................. 143
Глава 7. Проект: робот .................................................................................... 144
Деревня Медоуфилд........................................................................................ 144
Задача............................................................................................................. 146
Постоянные данные......................................................................................... 148
Моделирование ............................................................................................... 149
Маршрут почтового грузовика ......................................................................... 151
Поиск пути ...................................................................................................... 152
Упражнения..................................................................................................... 154
Измерение параметров робота ................................................................. 154
Эффективность робота............................................................................. 155
Постоянная группа ................................................................................... 155
Глава 8. Ошибки и дефекты ............................................................................ 156
Язык ................................................................................................................ 156
Строгий режим ................................................................................................ 157
Типы ............................................................................................................... 158
Тестирование .................................................................................................. 159
Отладка........................................................................................................... 161
Распространение ошибок................................................................................. 162
Исключения..................................................................................................... 164
Подчищаем за исключениями .......................................................................... 166
Выборочный перехват исключений.................................................................. 168
Утверждения ................................................................................................... 170
Резюме ............................................................................................................ 171
Упражнения..................................................................................................... 172
Повторная попытка .................................................................................. 172
Запертый ящик......................................................................................... 172
Глава 9. Регулярные выражения ..................................................................... 173
Создание регулярных выражений.................................................................... 173
Проверка на соответствия ............................................................................... 174
Множества символов ....................................................................................... 174
Повторяющиеся части шаблона....................................................................... 176
Группировка подвыражений ............................................................................ 177
10 Оглавление
Соответствия и группы .................................................................................... 178
Класс Date....................................................................................................... 179
Границы слов и строк ...................................................................................... 180
Выбор шаблонов.............................................................................................. 181
Механизм поиска соответствия........................................................................ 182
Поиск с возвратом........................................................................................... 183
Метод replace .................................................................................................. 185
О жадности ..................................................................................................... 187
Динамическое создание объектов RegExp........................................................ 188
Метод search ................................................................................................... 189
Свойство lastIndex ........................................................................................... 189
Циклический поиск соответствий..................................................................... 191
Анализ INI-файла ............................................................................................ 191
Интернациональные символы.......................................................................... 194
Резюме ............................................................................................................ 195
Упражнения..................................................................................................... 197
Стиль цитирования................................................................................... 198
Снова числа ............................................................................................. 198
Глава 10. Модули ............................................................................................ 199
Зачем нужны модули ....................................................................................... 199
Пакеты ............................................................................................................ 200
Импровизированные модули............................................................................ 202
Выполнение данных как кода .......................................................................... 203
CommonJS ....................................................................................................... 204
Модули ECMAScript .......................................................................................... 206
Сборка и комплектация ................................................................................... 208
Структура модулей .......................................................................................... 209
Резюме ............................................................................................................ 212
Упражнения..................................................................................................... 212
Модульный робот ..................................................................................... 212
Модуль Roads ........................................................................................... 213
Циклические зависимости ........................................................................ 213
Глава 11. Асинхронное программирование ...................................................... 214
Асинхронность................................................................................................. 215
Технологии воронов ........................................................................................ 216
Обратные вызовы............................................................................................ 218
Промисы.......................................................................................................... 220
Сбои................................................................................................................ 222
Сетевые трудности .......................................................................................... 224
Коллекции промисов ....................................................................................... 227
Лавина в сети.................................................................................................. 228
Маршрутизация сообщений ............................................................................. 229
Асинхронные функции..................................................................................... 232
Оглавление 11
Генераторы ..................................................................................................... 234
Цикл событий .................................................................................................. 235
Дефекты асинхронного программирования...................................................... 237
Резюме ............................................................................................................ 238
Упражнения..................................................................................................... 239
Где скальпель?......................................................................................... 239
Построение Promise.all ............................................................................. 239
Глава 12. Проект: язык программирования ..................................................... 241
Синтаксический анализ ................................................................................... 241
Интерпретатор ................................................................................................ 246
Специальные формы ....................................................................................... 248
Среда выполнения........................................................................................... 250
Функции .......................................................................................................... 251
Компиляция..................................................................................................... 252
Немного мошенничества.................................................................................. 253
Упражнения..................................................................................................... 254
Массивы................................................................................................... 254
Замыкание ............................................................................................... 255
Комментарии............................................................................................ 255
Исправление области видимости.............................................................. 255
Глава 13. JavaScript и браузер ......................................................................... 257
Интернет и другие сети ................................................................................... 258
Web ................................................................................................................. 259
HTML ............................................................................................................... 260
HTML и JavaScript ............................................................................................ 263
В «песочнице»................................................................................................. 264
Совместимость и браузерные войны................................................................ 265
Глава 14. Объектная модель документа .......................................................... 266
Структура документа ....................................................................................... 266
Деревья........................................................................................................... 268
Стандарт ......................................................................................................... 269
Перемещения по дереву .................................................................................. 270
Поиск элементов ............................................................................................. 272
Изменение документа...................................................................................... 273
Создание узлов................................................................................................ 273
Атрибуты......................................................................................................... 275
Разметка.......................................................................................................... 276
Стили .............................................................................................................. 278
Каскадные стили ............................................................................................. 280
Селекторы запросов ........................................................................................ 282
Позиционирование и анимация ....................................................................... 283
Резюме ............................................................................................................ 286
12 Оглавление
Упражнения..................................................................................................... 286
Построение таблицы ................................................................................ 286
Элементы по имени тега .......................................................................... 287
Кошка и ее шляпа .................................................................................... 287
Глава 15. Обработка событий ......................................................................... 289
Обработчики событий...................................................................................... 289
События и DOM-узлы....................................................................................... 290
Объекты событий ............................................................................................ 291
Распространение событий ............................................................................... 292
Действия по умолчанию .................................................................................. 293
События клавиш.............................................................................................. 294
События мыши................................................................................................. 296
Щелчки кнопкой мыши............................................................................. 296
Движения мыши....................................................................................... 297
Сенсорные события.................................................................................. 299
События прокрутки.......................................................................................... 300
События фокуса............................................................................................... 301
Событие загрузки ............................................................................................ 302
События и цикл событий.................................................................................. 303
Таймеры.......................................................................................................... 304
Устранение повторных срабатываний.............................................................. 305
Резюме ............................................................................................................ 307
Упражнения..................................................................................................... 307
Воздушный шарик .................................................................................... 307
След мыши............................................................................................... 308
Вкладки.................................................................................................... 308
Глава 16. Проект: игровая платформа ............................................................ 309
Игра ................................................................................................................ 309
Технология...................................................................................................... 310
Уровни ............................................................................................................ 311
Чтение уровня................................................................................................. 312
Акторы ............................................................................................................ 314
Инкапсуляция как бремя.................................................................................. 318
Рисование ....................................................................................................... 318
Движение и столкновения ............................................................................... 324
Изменение акторов.......................................................................................... 328
Отслеживание нажатий клавиш....................................................................... 330
Игра в действии............................................................................................... 331
Упражнения..................................................................................................... 333
Игра окончена.......................................................................................... 333
Приостановка игры .................................................................................. 333
Монстр ..................................................................................................... 334
Оглавление 13
Глава 17. Рисование на холсте ........................................................................ 335
SVG ................................................................................................................. 336
Элемент canvas................................................................................................ 337
Линии и поверхности....................................................................................... 338
Пути ................................................................................................................ 339
Кривые ............................................................................................................ 341
Рисование круговой диаграммы....................................................................... 344
Текст ............................................................................................................... 345
Изображения................................................................................................... 346
Преобразования .............................................................................................. 348
Сохранение и отмена преобразований............................................................. 351
Возвращаясь к игре ......................................................................................... 352
Выбор графического интерфейса..................................................................... 358
Резюме ............................................................................................................ 359
Упражнения..................................................................................................... 360
Фигуры..................................................................................................... 360
Круговая диаграмма................................................................................. 361
Прыгающий шарик ................................................................................... 361
Заранее рассчитанное зеркальное отражение .......................................... 361
Глава 18. HTTP и формы ................................................................................. 362
Протокол......................................................................................................... 362
Браузеры и HTTP ............................................................................................. 365
Fetch................................................................................................................ 366
HTTP-«песочница»........................................................................................... 368
Цените HTTP по достоинству ........................................................................... 369
HTTPS и безопасность...................................................................................... 370
Поля форм....................................................................................................... 370
Фокус .............................................................................................................. 372
Отключенные поля .......................................................................................... 374
Форма в целом ................................................................................................ 374
Текстовые поля ............................................................................................... 375
Флажки и переключатели................................................................................ 377
Поля выбора.................................................................................................... 378
Поля выбора файлов ....................................................................................... 379
Хранение данных на стороне клиента.............................................................. 381
Резюме ............................................................................................................ 384
Упражнения..................................................................................................... 385
Согласование содержимого ...................................................................... 385
Среда выполнения JavaScript.................................................................... 386
Игра «Жизнь» Конвея .............................................................................. 386
Глава 19. Проект: растровый графический редактор ...................................... 387
Компоненты..................................................................................................... 388
Состояние........................................................................................................ 390
14 Оглавление
Построение DOM ............................................................................................. 392
Холст............................................................................................................... 392
Приложение .................................................................................................... 395
Инструменты рисования .................................................................................. 398
Сохранение и загрузка .................................................................................... 400
История действий............................................................................................ 404
Давайте порисуем ........................................................................................... 405
Почему это так сложно? .................................................................................. 406
Упражнения..................................................................................................... 407
Клавиатурные привязки ........................................................................... 407
Эффективное рисование .......................................................................... 408
Круги ....................................................................................................... 408
Правильные линии ................................................................................... 408
Глава 20. Node.js ............................................................................................ 410
Основы............................................................................................................ 411
Команда node .................................................................................................. 411
Модули............................................................................................................ 412
Установка с помощью NPM .............................................................................. 414
Файлы пакетов......................................................................................... 415
Версии ..................................................................................................... 415
Модуль файловой системы .............................................................................. 416
Модуль HTTP ................................................................................................... 418
Потоки............................................................................................................. 421
Файловый сервер ............................................................................................ 422
Резюме ............................................................................................................ 429
Упражнения..................................................................................................... 429
Инструмент поиска................................................................................... 429
Создание каталога ................................................................................... 430
Публичное пространство в сети................................................................ 430
Глава 21. Проект: сайт по обмену опытом ....................................................... 432
Структура ........................................................................................................ 433
Длительный опрос........................................................................................... 434
HTTP-интерфейс .............................................................................................. 435
Сервер............................................................................................................. 437
Маршрутизация........................................................................................ 437
Обслуживание файлов ............................................................................. 439
Беседы как ресурсы.................................................................................. 440
Поддержка длительных опросов............................................................... 443
Клиент............................................................................................................. 444
HTML........................................................................................................ 445
Действия.................................................................................................. 445
Оглавление 15
Визуализация компонентов ...................................................................... 447
Опросы..................................................................................................... 449
Приложение ............................................................................................. 450
Упражнения..................................................................................................... 451
Хранение на диске ................................................................................... 451
Сброс поля комментариев ........................................................................ 452
Советы по выполнению упражнений................................................................... 453
Структура программы...................................................................................... 453
Построение треугольника в цикле............................................................ 453
FizzBuzz .................................................................................................... 453
Шахматная доска ..................................................................................... 454
Функции .......................................................................................................... 454
Минимум .................................................................................................. 454
Рекурсия .................................................................................................. 454
Подсчет букв............................................................................................ 455
Структуры данных: объекты и массивы............................................................ 455
Сумма диапазона...................................................................................... 455
Массив в обратном порядке ..................................................................... 456
Список ..................................................................................................... 457
Глубокое сравнение ................................................................................. 457
Функции высшего порядка............................................................................... 458
Метод every.............................................................................................. 458
Доминирующее направление письма........................................................ 458
Тайная жизнь объектов ................................................................................... 459
Тип вектора ............................................................................................. 459
Группы..................................................................................................... 459
Итерируемые группы................................................................................ 459
Заимствование метода ............................................................................. 460
Проект: робот.................................................................................................. 460
Измерение параметров робота ................................................................. 460
Эффективность робота............................................................................. 460
Постоянная группа ................................................................................... 461
Ошибки и дефекты.......................................................................................... 461
Повторная попытка .................................................................................. 461
Запертый ящик......................................................................................... 462
Регулярные выражения ................................................................................... 462
Стиль цитирования................................................................................... 462
Снова числа ............................................................................................. 462
Модули............................................................................................................ 463
Модульный робот ..................................................................................... 463
Модуль Roads ........................................................................................... 464
Циклические зависимости ........................................................................ 464
16 Оглавление
Асинхронное программирование...................................................................... 465
Где скальпель?......................................................................................... 465
Построение Promise.all ............................................................................. 465
Проект: язык программирования ..................................................................... 466
Массивы................................................................................................... 466
Замыкание ............................................................................................... 466
Комментарии............................................................................................ 467
Изменение области видимости ................................................................. 467
Объектная модель документа .......................................................................... 467
Построение таблицы ................................................................................ 467
Элементы по имени тега .......................................................................... 468
Кошка и ее шляпа .................................................................................... 468
Обработка событий ......................................................................................... 468
Воздушный шарик .................................................................................... 468
След мыши............................................................................................... 469
Вкладки.................................................................................................... 469
Проект: игровая платформа ............................................................................ 470
Приостановка игры .................................................................................. 470
Монстр ..................................................................................................... 471
Рисование на холсте........................................................................................ 471
Фигуры..................................................................................................... 471
Круговая диаграмма................................................................................. 472
Прыгающий шарик ................................................................................... 473
Заранее рассчитанное зеркальное отражение .......................................... 473
HTTP и формы ................................................................................................. 474
Согласование содержимого ...................................................................... 474
Среда выполнения JavaScript.................................................................... 474
Игра «Жизнь» Конвея .............................................................................. 474
Проект: растровый графический редактор....................................................... 475
Клавиатурные привязки ........................................................................... 475
Эффективное рисование .......................................................................... 475
Круги ....................................................................................................... 476
Правильные линии ................................................................................... 476
Node.js ............................................................................................................ 477
Инструмент поиска................................................................................... 477
Создание каталога ................................................................................... 478
Публичное пространство в сети................................................................ 478
Проект: сайт по обмену опытом....................................................................... 479
Хранение на диске ................................................................................... 479
Сброс поля комментариев ........................................................................ 479