Это короткий фрагмент для ознакомления с книгой.
Москва
«Манн, Иванов и Фербер»
2016
УДК 087.5:004.43
ББК 76.1,62:32.973.412
М79
Перевод с английского Станислава Ломакина
Издано с разрешения No Starch Press, Inc., a California Corporation
На русском языке публикуется впервые
Возрастная маркировка в соответствии
с Федеральным законом № 436-ФЗ: 6+
Морган, Ник
М79 JavaScript для детей. Самоучитель по программированию / Ник Морган ;
пер. с англ. Станислава Ломакина ; [науч. ред. Д. Абрамова]. — М. : Манн,
Иванов и Фербер, 2016. — 288 с.
ISBN 978-5-00100-295-6
Эта книга позволит вам погрузиться в программирование и с легкостью
освоить JavaScipt. Вы напишете несколько настоящих игр — поиск сокро-
вищ на карте, «Виселицу» и «Змейку». На каждом шаге вы сможете оценить
результаты своих трудов — в виде работающей программы, а с понятными
инструкциями, примерами и забавными иллюстрациями обучение будет
только приятным. Книга для детей от 10 лет.
УДК 087.5:004.43
ББК 76.1,62:32.973.412
Все права защищены. Никакая часть данной книги не
может быть воспроизведена в какой бы то ни было форме
без письменного разрешения владельцев авторских прав.
Правовую поддержку издательства обеспечивает юриди-
ческая фирма «Вегас-Лекс».
ISBN 978-5-00100-295-6
Copyright © 2014 by Nick Morgan.
Title of English-language original: JavaScript for Kids,
ISBN 978-1-59327-408-5, published by No Starch Press.
© Перевод на русский язык, издание на русском языке,
оформление. ООО «Манн, Иванов и Фербер», 2016
О ГЛ А В Л Е Н И Е
ВВЕДЕНИЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
ЧАСТЬ I. ОСНОВЫ
1. ЧТО ТАКОЕ JAVASCRIPT? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Знакомьтесь: JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Зачем изучать JavaScript? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Пробуем JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Строение JavaScript-программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2. ТИПЫ ДАННЫХ И ПЕРЕМЕННЫЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Числа и операторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Переменные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Булевы значения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Undefined и null . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3. МАССИВЫ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Зачем нужны массивы? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Создание массива . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5
Доступ к элементам массива . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Создание и изменение элементов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Разные типы данных в одном массиве . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Работаем с массивами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Что полезного можно сделать с массивами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4. ОБЪЕКТЫ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Создание объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Доступ к значениям внутри объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Добавление элементов объекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Массивы объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Исследование объектов в консоли . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Что полезного можно сделать с объектами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5. ОСНОВЫ HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Текстовые редакторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Наш первый HTML-документ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Теги и элементы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Полноценный HTML-документ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Иерархия HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Добавим в HTML ссылки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6. УСЛОВИЯ И ЦИКЛЫ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Внедрение JavaScript-кода в HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Условные конструкции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Циклы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7. ПИШЕМ ИГРУ «ВИСЕЛИЦА» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Взаимодействие с игроком . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Проектирование игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Программируем игру . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Код игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
6 Оглавление
8. ФУНКЦИИ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Базовое устройство функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Создаем простую функцию . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Вызов функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Передача аргументов в функцию . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Возврат значения из функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Вызов функции в качестве значения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Упрощаем код с помощью функций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Ранний выход из функции по return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Многократное использование return вместо конструкции if... else . . . . . 137
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
ЧАСТЬ II.
ПРОДВИНУТЫЙ JAVASCRIPT
9. DOM И JQUERY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Поиск элементов DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Работа с деревом DOM через jQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Создание новых элементов через jQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Анимация элементов средствами jQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Цепной вызов и анимация на jQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
10. ИНТЕРАКТИВНОЕ ПРОГРАММИРОВАНИЕ . . . . . . . . . . . . . . . . . . . . 156
Отложенное выполнение кода и setTimeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Отмена действия таймера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Многократный запуск кода и setInterval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Анимация элементов с помощью setInterval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Реакция на действия пользователя . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
11. ПИШЕМ ИГРУ «НАЙДИ КЛАД!» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Проектирование игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Создаем веб-страницу с HTML-кодом . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Выбор случайного места для клада . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Обработчик кликов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Код игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Оглавление 7
12. ОБЪЕКТНООРИЕНТИРОВАННОЕ
ПРОГРАММИРОВАНИЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Простой объект . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Добавление к объектам новых методов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Создание объектов с помощью конструкторов . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Рисуем машины . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Настройка объектов через прототипы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
ЧАСТЬ III. ГРАФИКА
13. ЭЛЕМЕНТ CANVAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Создаем «холст» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Рисование на «холсте» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Выбор цвета . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Рисование контуров прямоугольников . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Рисование линий или путей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Заливка путей цветом . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Рисование дуг и окружностей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Рисование нескольких окружностей с помощью функции . . . . . . . . . . . . 204
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
14. АНИМАЦИИ С ПОМОЩЬЮ CANVAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Движение по странице . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Изменение размера квадрата . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Случайная пчела . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Отскакивающий мяч . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
15. УПРАВЛЕНИЕ АНИМАЦИЯМИ С КЛАВИАТУРЫ . . . . . . . . . . . . . . 224
События клавиатуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Управляем мячом с клавиатуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Код программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Запуск программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
16. ПИШЕМ ИГРУ «ЗМЕЙКА»: ЧАСТЬ 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Игровой процесс . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
8 Оглавление
Структура игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Начинаем писать игру . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Рисуем рамку . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Отображение счета . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Конец игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
17. ПИШЕМ ИГРУ «ЗМЕЙКА»: ЧАСТЬ 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Создаем конструктор Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Создаем змейку . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Перемещаем змейку . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Управляем змейкой с клавиатуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Создаем яблоко . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Код игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
ПОСЛЕСЛОВИЕ:
КУДА ДВИГАТЬСЯ ДАЛЬШЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Больше о JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Веб-программирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Графическое программирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
3D-программирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Программирование роботов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Программирование звука . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Программирование игр . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Обмен кодом с помощью JSFiddle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
ГЛОССАРИЙ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
ОБ АВТОРЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
БЛАГОДАРНОСТИ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Посвящается Филли
(и Оладушку)
В В Е Д Е Н И Е
Эта книга научит вас писать программы на JavaScript — одном из попу-
лярных языков программирования. А освоив язык программирования,
вы станете программистом — человеком, который не просто пользуется
компьютерами, а управляет ими. Научившись программированию, вы
сможете вертеть компьютерами как хотите, и они всегда будут послушно
следовать вашим указаниям.
Изучить именно JavaScript — отличная идея, потому что этот язык
используется повсюду. Его поддерживают браузеры Chrome, Firefox
и Internet Explorer. Возможности JavaScript позволяют программистам
делать из обычных веб-страниц полноценные интерактивные приложе-
ния и видеоигры. Но это еще не все: JavaScript также работает на интер-
нет-серверах и даже может использоваться для управления роботами
и другими устройствами.
Для кого эта книга?
Эта книга предназначена для всех, кто хочет изучить именно JavaScript
или же просто начать программировать с нуля. Она написана для детей,
но может стать первым самоучителем по программированию для человека
любого возраста.
Работая с книгой, вы будете постепенно узнавать новое, закреплять
прочитанное и двигаться дальше и дальше. Начав с простых типов
данных, вы перейдете к более сложным, по пути освоив управляющие
конструкции и функции. После этого вы научитесь писать код, реаги-
рующий на перемещения мышки или нажатия клавиш, и наконец позна-
комитесь с элементом canvas, который позволяет создавать рисунки
и анимации — любые, какие только пожелаете!
11
Как читать эту книгу
Самое главное, читайте по порядку! Может быть, этот совет звучит
странно, однако нередко людям не терпится сразу перейти к чему-нибудь
занимательному, например к созданию игр. Но поверьте — вам будет
гораздо проще создать игру, если вы все-таки будете читать с начала,
глава за главой, так как каждый новый раздел основывается на материа ле
предыдущих.
Языки программирования похожи на обычные языки. Вы, наверное,
знаете — чтобы овладеть языком, нужно выучить грамматику и запом-
нить достаточно много слов. Это требует времени. Это же правило рабо-
тает и с JavaScript — чтобы научиться пользоваться этим языком, нужно
постоянно исследовать код и писать на нем программы. По мере того
как вы будете писать больше и больше, вы обнаружите, что пользуетесь
командами все более естественно, и в конце концов сможете свободно
выражать свои мысли в коде.
Я настоятельно рекомендую тестировать примеры кода по мере чте-
ния книги. Если вам не до конца понятно, как код работает, попробуйте
вносить в него небольшие изменения и смотреть, как изменится резуль-
тат. Если же ваши правки не приводят к ожидаемому эффекту, постарай-
тесь выяснить, почему это происходит.
Обязательно выполняйте задания из разделов «Попробуйте сами»
и «Упражнения». Вводить в компьютер код из книги — отличное начало,
но по-настоящему вы станете понимать программирование только
тогда, когда начнете писать собственный код. Если задания покажутся
вам интересными, не останавливайтесь! Придумывайте свои задачи
по усовершенствованию написанных вами программ.
Вы можете найти примеры выполнения заданий и исходный код
игр по адресу www.nostarch.com/javascriptforkids или на странице книги
на сайте www.mann-ivanov-ferber.ru. Постарайтесь заглядывать в решения
лишь после того, как выполните задания, чтобы сравнить свой подход
с моим. И только если вы зашли в тупик, обратитесь за подсказкой. Однако
помните, что это лишь варианты решения — в JavaScript существует мно-
жество способов выполнить одну и ту же задачу, так что не беспокойтесь,
если ваше решение получится совсем не похожим на мое.
Если вы встретите слово, значение которого не понимаете, загляните
в глоссарий в конце книги.
Что вас ждет?
Глава 1 содержит краткое введение в JavaScript. Кроме того, вы узна-
ете, как писать код в консоли Google Chrome.
Глава 2 расскажет про переменные и основные типы данных
в JavaScript: числа, строки и булевы значения.
12 Введение
Глава 3 посвящена массивам, предназначенным для хранения набо-
ров других элементов данных.
Глава 4 расскажет об объектах, содержащих пары «ключ-значение».
Глава 5 — это введение в HTML, язык для создания веб-страниц.
Глава 6 научит, как управлять выполнением кода с помощью кон-
струкций if, циклов for и других структур.
Глава 7 покажет, как на основе изученного материала создать про-
стую игру на отгадывание слов — «Виселицу».
Глава 8 научит писать собственные функции, что позволит группи-
ровать фрагменты кода и использовать их повторно.
Глава 9 — это введение в jQuery, инструмент, облегчающий управле-
ние веб-страницами из JavaScript-кода.
Глава 10 научит, как использовать таймеры, интервалы и обработ-
чики событий, делая код более интерактивным.
Глава 11 использует функции, jQuery и обработчики событий для
создания игры «Найди клад!».
Глава 12 научит элементам объектно-ориентированного про грам-
мирования.
Глава 13 расскажет об элементе canvas, позволяющем создавать
графические изображения на веб-страницах.
Глава 14 на основе способов анимации из главы 10 покажет, как соз-
давать анимации на «холсте» canvas,
тогда как
Глава 15 научит, как управлять этими анимациями с клавиатуры.
В главах 16 и 17 вы создадите полноценную игру «Змейка», исполь-
зуя все знания, полученные в предыдущих пятнадцати главах!
Послесловие подскажет, куда двигаться дальше при изучении
программирования.
Глоссарий даст определения множества новых слов, которые вам
встретятся.
Повеселитесь!
И еще один момент, о котором не стоит забывать: веселитесь! Про грам-
мирование может быть увлекательным, творческим занятием, как рисо-
вание или игры (а работая с книгой, вы изрядно порисуете и поиграете).
Как только вы научитесь программировать, для вас не будет иных пре-
град, кроме собственного воображения. Добро пожаловать в потряса-
ющий мир компьютерного программирования — и желаю вам отлично
провести время!
Ч АС Т Ь I
Основы
Ч АС Т Ь I
Ос
Осно
н в
о ы
в
1
Ч Т О ТА КО Е J AVA S C R I P T ?
Компьютеры — необычайно мощные машины, способные
делать потрясающие вещи. Например, они могут играть
в шахматы, обслуживать тысячи интернет-страничек и менее
чем за несколько секунд выполнять миллионы сложных
вычислений. Однако сами по себе компьютеры неразумны,
и делают они лишь то, что прикажут люди. Мы сообщаем
компьютерам, что нам от них нужно, с помощью наборов
инструкций, которые называются программами. Без про-
грамм компьютеры вообще ничего не умеют!
Знакомьтесь: JavaScript
Более того, компьютеры не знают ни английского, ни русского, ни других
естественных языков; и компьютерные программы создают на специ-
альных языках программирования. Одним из таких языков является
JavaScript. Даже если вы слышите про JavaScript впервые, вы опреде-
ленно заходили на сайты, которые его используют. Например, JavaScript
может управлять внешним видом странички или делать так, чтобы стра-
ница реагировала на нажатие клавиши или перемещение мышки.
Такие сайты, как Gmail, Facebook и Twitter, используют JavaScript для
облегчения работы с почтой, отправки комментариев или улучшения
навигации. К примеру, когда вы, читая в Twitter сообщения от @nostarch,
проматываете страничку вниз и видите все больше и больше сообщений,
это происходит благодаря JavaScript.
Чтобы понять, чем же так хорош JavaScript, достаточно посетить
несколько сайтов:
17
• JavaScript позволяет проигрывать музыку и создавать яркие визу-
альные эффекты. Например, вы можете полетать в интерактивном
видеоклипе от студии HelloEnjoy на песню Элли Голдинг Lights
(http://lights.helloenjoy.com/), рис. 1.1.
Рис. 1.1. В клипе Lights нужно управлять искрящимся курсором
• С помощью JavaScript можно создавать инструменты для творчества.
Patatap (http://www.patatap.com/) — это нечто вроде виртуальной
драм-машины, которая издает всевозможные шумы и звуки, а также
проигрывает забавные анимации, рис. 1.2.
Рис. 1.2. Зайдя на страничку Patatap, нажимайте на разные клавиши, чтобы услышать
разные звуки!
18 Часть I. Основы
• JavaScript дает нам возможность играть в увлекательные игры.
CubeSlam (https://www.cubeslam.com/) — это трехмерное подобие
классической игры «Понг», похожее на аэрохоккей. Посоревнуйтесь
с кем-нибудь из друзей или с медведем, за которого играет компью-
тер. См. рис. 1.3.
Рис. 1.3. Игра CubeSlam написана целиком на JavaScript!
Зачем изучать JavaScript?
JavaScript — далеко не единственный язык программирования. В сущ-
ности, языков очень много, счет идет на сотни, однако есть немало при-
чин выбрать именно JavaScript. Например, изучать его гораздо проще
(и интереснее), чем многие другие языки. Но, пожалуй, самая веская
причина такова: чтобы писать и выполнять JavaScript-программы, доста-
точно интернет-браузера — такого, как Internet Explorer, Mozilla Firefox
или Google Chrome. В каждый из этих браузеров встроен интерпретатор
JavaScript, который сможет выполнять JavaScript-программы. И ника-
кого специального программного обеспечения вам не понадобится.
Написав программу на JavaScript, отправьте ссылку на нее другим
людям, и они тоже смогут ее запустить — у себя на компьютере, в брау-
зере (см. «Обмен кодом с помощью JSFiddle» на с. 280).
Пробуем JavaScript
Давайте напишем простую JavaScript-программку с помощью браузера
Google Chrome (www.google.com/chrome). Установите Chrome на свой
компьютер (если он еще не установлен), запустите его и введите слова
about:blank в адресной строке. Теперь нажмите ENTER — откроется
пустая страничка, как на рис. 1.4.
1. Что такое JavaScript? 19
Начнем с программирования в JavaScript-консоли Chrome (это секрет-
ный инструмент для тестирования коротких программ на JavaScript).
Если ваш компьютер работает под управлением Microsoft Windows
или Linux, нажмите и не отпускайте клавиши CTRL и SHIFT, а затем
нажмите J. Если же вы пользуетесь системой MacOS, нажмите и удержи-
вайте COMMAND и OPTION, а затем нажмите J.
Если вы все сделали правильно, то увидите пустую веб-страницу, под
которой стоит значок угловой скобки (>), а после него мигает курсор (|).
Здесь нам и предстоит писать код на языке JavaScript!
! Текст в консоли Chrome подсвечивается разными цветами в зависи-
мости от типа данных. В этой книге код для ввода в консоль напе-
чатан такими же цветами там, где это имеет значение. Но там,
где разноцветный код будет вас только отвлекать, синим мы будем
выделять то, что сами вводим в консоль, а данные, которые авто-
матически выдаст программа, будут цветными.
Адресная строка используется для перехода на сайты,
например Facebook.com или Google.com. Сейчас нам
нужна пустая страница, поэтому вводим about:blank
и жмем ENTER.
JavaScript-консоль: здесь мы будем
тестировать короткие программы.
Рис. 1.4. JavaScript-консоль Google Chrome
Когда вы введете код и нажмете ENTER, JavaScript должен запу-
стить (иначе говоря, выполнить) ваш код, показав на следующей строке
результат (когда он есть). Например, введите в консоли:
20 Часть I. Основы
3 + 4;
Теперь нажмите ENTER. JavaScript должен напечатать результат сло-
жения (7) на следующей строке:
3 + 4;
7
Как видите, ничего сложного. Но JavaScript — это нечто определенно
большее, чем просто затейливый калькулятор. Давайте попробуем кое-
что еще.
Строение JavaScript-программы
Давайте позабавимся — напишем JavaScript-программу, которая печа-
тает японские смайлики каомодзи в виде кошачьей мордочки:
=^.^=
В отличие от простого сложения, с которого мы
начали, эта программа занимает несколько строк.
Чтобы ввести ее в консоли, нужно будет в конце
каждой строки переходить на новую строку нажа-
тием SHIFT-ENTER. (Если нажать просто ENTER,
Chrome попытается выполнить те команды, кото-
рые вы уже ввели, и программа не будет рабо-
тать правильно. Сами по себе компьютеры ничего
не соображают — я предупреждал!)
Введите в консоли браузера:
// Рисуем столько котиков, сколько захотим!
Draw cats —
var drawCats = function (howManyTimes) {
рисовать
for (var i = 0; i < howManyTimes; i++) {
котиков
console.log(i + " =^.^=");
}
Function —
};
функция
drawCats(10); // Вместо 10 тут может быть другое число
How
many
times —
сколько раз
1. Что такое JavaScript? 21
В конце последней строки нажмите ENTER, а не SHIFT-ENTER.
Программа должна напечатать следующее:
0 =^.^=
1 =^.^=
2 =^.^=
3 =^.^=
4 =^.^=
5 =^.^=
6 =^.^=
7 =^.^=
8 =^.^=
9 =^.^=
Если при вводе программы вы где-то ошиб лись, результат может ока-
заться другим — возможно, вы даже получите сообщение об ошибке. Это
я и имел в виду, говоря, что компьютеры неразумны, — даже простейшая
программа должна быть написана идеально, чтобы компьютер понял,
что от него требуется!
Я не буду сейчас вдаваться в подробности, объясняя, как работает этот
код (мы еще вернемся к нему в восьмой главе), однако давайте рассмотрим
некоторые особенности этой программы, да и JavaScript-программ в целом.
Синтаксис
В нашей программе встречается много символов, таких как скобки (), точки
с запятой ;, фигурные скобки {}, знаки плюс +, а также некоторые таин-
ственные на первый взгляд слова (например, var и console.log). Все это
является частью синтаксиса JavaScript — то есть правил, указывающих, как
объединять символы и слова, чтобы составить работающую программу.
Одна из главных сложностей при освоении нового языка программи-
рования — запомнить правила написания команд. Поначалу легко про-
пустить какие-нибудь скобки или запутаться в очередности записи зна-
чений. Не волнуйтесь, с опытом вы привыкнете писать код правильно.
В этой книге мы будем изучать материал медленно, постепенно зна-
комясь с новыми командами языка, чтобы вы могли писать все более
и более мощные программы.
Комментарии
В первой строке нашей программы написано:
// Рисуем столько котиков, сколько захотим!
22 Часть I. Основы
Это называется комментарий. Программисты пишут коммента-
рии, чтобы другим программистам было легче читать и понимать их
код. Компьютер же комментарии игнорирует. В JavaScript комментарии
начинаются с двух символов наклонной черты (//). Все, что идет следом
за ними (в той же строке), интерпретатор JavaScript пропускает, поэтому
комментарии не оказывают влияния на выполнение программы — это
всего лишь пояснение.
В примерах кода, которые встретятся вам в этой книге, комментарии
описывают, что и как там происходит. При написании своего кода тоже
добавляйте комментарии — когда вы заглянете в программу некоторое
время спустя, они напомнят вам, как работает код и что происходит
на том или ином этапе.
В конце нашей программы-примера есть еще один коммента-
рий. Напоминаю: все, что записано после символов //, компьютер
игнорирует!
drawCats(10); // Вместо 10 тут может быть другое число
Комментарии могут занимать отдельную строку или следовать сразу
после кода. Но если вы поставите // перед кодом, вот так:
// drawCats(10);
...то не произойдет вообще ничего! Chrome решит, что вся эта
строка — комментарий, хоть там и записаны инструкции на языке
JavaScript.
Когда вы, помимо примеров в этой книге, начнете изучать чужой
JavaScript-код, вам будут попадаться комментарии, которые выглядят
иначе:
/*
Рисуем столько котиков,
сколько захотим!
*/
Это другая разновидность комментариев; их обычно используют,
когда текст примечания не помещается на одной строке. Однако прин-
цип здесь тот же: текст, записанный между /* и */, — это комментарий,
и выполнять его компьютер не будет.
1. Что такое JavaScript? 23
Что мы узнали
В этой главе мы познакомились с языком JavaScript и узнали,
что можно делать с его помощью. Кроме того, мы научились
запускать JavaScript-код в браузере Google Chrome и ввели
несложную программу-пример. Все примеры из этой книги
можно (и нужно!) запускать в JavaScript-консоли Google
Chrome (если только я не скажу, что этого делать не надо).
Просто читать код недостаточно — проверяйте, как он рабо-
тает! Это единственный способ научиться программировать.
В следующей главе мы приступим к изучению основ
языка JavaScript, начиная с трех основных типов данных,
с которыми вам предстоит работать: чисел, строк и булевых
значений.
2
Т И П Ы Д А Н Н Ы Х И П Е Р Е М Е Н Н Ы Е
Программирование — это работа с данными, но что такое данные?
Данные — это информация, которая хранится в наших компьютерных
программах. Например, ваше имя — это элемент данных, и ваш возраст
тоже. Цвет волос, количество братьев и сестер, ваш адрес и пол — все это
данные.
В JavaScript есть три основных типа данных: числа, строки и булевы
значения. Числа — они и есть числа, тут все понятно. Например, числом
можно выразить возраст или рост.
В JavaScript числа записываются так:
5;
Любые текстовые данные записываются в строки. В JavaScript ваше
имя можно выразить строкой (так же как и адрес вашей электронной
почты).
Строки выглядят так:
"Привет, я строка";
Булевы значения могут хранить одну из двух величин —
либо это true («истина»), либо false («ложь»). Например, таким
способом можно показать, носите ли вы очки или любите ли вы
брокколи.
25
Пример булева значения:
true;
С данными разных типов и обращаться следует по-разному.
Например, перемножить два числа можно, а перемножить две строки —
нет. Зато, имея строку, можно выделить пять ее первых символов. Взяв
два булевых значения, можно проверить, являются ли они оба «истиной»
(true). Вот все эти действия на примере:
99 * 123;
12177
"Вот длинная строка".slice(0, 3);
"Вот"
true && false;
false
Любые данные в JavaScript — не более чем сочетание этих основных
типов. Далее мы по очереди рассмотрим каждый тип данных и изучим
различные способы работы с ними.
! Наверное, вы заметили, что все эти команды оканчиваются
на точку с запятой (;). Этим символом обозначают конец каждой
отдельной команды или инструкции языка JavaScript — примерно
так же, как точка отмечает конец предложения.
Числа и операторы
JavaScript позволяет выполнять основные математические опера-
ции, такие как сложение, вычитание, умножение и деление. Для
их записи используются символы +, −, * и /, которые называют
опе раторами.
Консоль JavaScript можно использовать как калькулятор. Один
из примеров — сложение 3 и 4 — нам уже знаком. Давайте вычислим
что-нибудь посложнее: сколько будет 12345 плюс 56789?
12345 + 56789;
69134
Посчитать это в уме не так уж просто, а JavaScript мгновенно спра-
вился с задачей.
26 Часть I. Основы
Можно сложить несколько чисел с помощью нескольких знаков «плюс»:
22 + 33 + 44;
99
Также JavaScript умеет вычитать...
1000 - 17;
983
умножать (с помощью символа «звездочка»)...
123 * 456;
56088
и делить (с помощью косой черты — слэша)...
12345 / 250;
49.38
Кроме того, можно объединять эти простые операции, составляя
более сложные выражения, вроде такого:
1234 + 57 * 3 - 31 / 4;
1397.25
Есть один нюанс — результат вычислений зависит
1234 + 57 * 3 - 31 / 4
от порядка, в котором JavaScript выполняет отдельные
операции. В математике существует правило, по которому
1234 + 171 - 31 / 4
умножение и деление выполняются прежде, чем сложение
и вычитание, и JavaScript ему следует.
1234 + 171 - 7.75
Порядок, в котором интерпретатор JavaScript выполняет
эти операции, показан на рис. 2.1. Сначала он умножает
1405 - 7.75
57 * 3, получая 171 (выделено красным). Затем делит 31 / 4,
получая 7.75 (выделено синим). Затем складывает 1234 + 171,
1397.25
получая 1405 (выделено зеленым). И наконец, вычитает
1405 − 7.75, что дает 1397.25 — окончательный результат.
Но как быть, если вы хотите выполнить сложение
Рис. 2.1. Очередность выполнения
и вычитание до умножения и деления? Для примера предпо-
операций: умножение, деление,
ложим, что у вас есть 1 брат, 3 сестры и 8 карамелек, которые
сложение, вычитание
2. Типы данных и переменные 27
вы решили поровну разделить между ними (свою долю вы уже прикарма-
нили). Нужно разделить 8 на общее количество братьев и сестер.
Попытаемся это сделать:
8 / 1 + 3;
11
Это не может быть верным ответом! Не получится дать
каждому родственнику по 11 карамелек, если у вас всего-то
8 конфет! Проблема в том, что JavaScript выполняет деление
прежде, чем сложение, то есть он делит 8 на 1 (что равно 8)
и затем прибавляет 3, получая в результате 11. Чтобы испра-
вить эту ошибку, заставим JavaScript сначала выполнить
сложение, воспользовавшись скобками:
8 / (1 + 3);
2
Так гораздо лучше — вышло по две карамельки каждому из род-
ственников. Скобки вынудили JavaScript сложить 1 и 3 до деления 8 на 4.
ПОПР ОБУ ЙТЕ !
Предположим, ваша подруга пытается подсчитать с помощью JavaScript,
сколько ей нужно купить воздушных шаров. Она устраивает вечеринку
и хочет, чтобы каждый из гостей смог надуть по 2 шарика. Сначала было
приглашено 15 человек, но потом ваша подруга позвала еще 9.
Она написала такой код:
15 + 9 * 2;
33
Однако ответ, судя по всему, неверен.
Где надо поставить скобки, чтобы JavaScript сначала складывал, а потом
умножал, и сколько шариков нужно вашей подруге на самом деле?
Переменные
Значениям в JavaScript можно давать имена, используя переменные.
Переменная похожа на ящичек, в который помещается лишь один пред-
мет. Чтобы положить туда что-то еще, прежнее содержимое придется
заменить.
Чтобы создать новую переменную, используйте ключевое слово var,
после которого укажите имя переменной. Ключевое слово — это слово,
28 Часть I. Основы
обладающее для JavaScript особым значением. В данном случае, когда
JavaScript встречает слово var, он понимает, что следом указано имя
новой переменной. Например, вот как создать переменную с именем nick:
var nick;
Undefined —
undefined
значение
не определено
Мы создали новую переменную под названием nick. В ответ консоль
выдала undefi ned — «значение не определено». Однако это не ошибка!
JavaScript всегда так делает, если команда не возвращает какого-либо
значения. Вы спросите, а что такое «возвращать значение»? Вот пример:
когда вы ввели 12345 + 56789;, консоль вернула значение 69134. Однако
в JavaScript команда создания переменной никакого значения не возвра-
щает, поэтому интерпретатор печатает undefi ned.
В этом примере и дальше мы будем давать переменным англоязыч-
ные имена, потому что английский — основной язык всей IT-области
и программы принято писать только латиницей (кроме комментариев
и строковых значений). Использовать русскоязычные имена перемен-
ных — это как если при составлении математических уравнений вме-
сто x и y вы использовали бы русские буквы. Можно, но не принято.
Итак, чтобы задать переменной значение, используйте знак «равно»:
var age = 12;
Аge — возраст
undefined
Задание значения переменной называют присваиванием (здесь мы
присваиваем значение 12 переменной age). И опять в консоли появля-
ется undefi ned, поскольку мы только что создали новую переменную.
(В дальнейших примерах я буду пропускать это undefi ned.)
Теперь в интерпретаторе есть переменная age, которой присвоено
значение 12. И если ввести в консоли имя age, интерпретатор выдаст
значение этой переменной:
age;
12
Здорово! При этом значение переменной не высечено в камне ( пере-
менные потому так и зовутся, что могут менять значения), и, если вам
вздумается его обновить, просто используйте знак «равно» еще раз.
age = 13;
13
2. Типы данных и переменные 29
На этот раз я не использовал ключевое слово var, поскольку перемен-
ная age уже существует. Писать var нужно только при создании пере-
менной, а не при ее использовании. И обратите внимание: поскольку мы
не создавали новой переменной, команда присваивания вернула значе-
ние 13, которое и было напечатано в следующей строке.
Вот чуть более сложный пример — решение задачи про карамельки
без помощи скобок:
Number
var numberOfSiblings = 1 + 3;
of siblings —
var numberOfCandies = 8;
число братьев
numberOfCandies / numberOfSiblings;
и сестер
2
Number
of candies —
число конфет
Сначала мы создали переменную с именем numberOfSiblings
(количество братьев и сестер) и присвоили ей значение выражения
1 + 3 (которое JavaScript вычислил, получив 4). Потом мы создали
переменную numberOfCandies (количество карамелек) и присво-
или ей значение 8. И наконец, мы ввели: numberOfCandies / num-
berOfSiblings. Поскольку переменная numberOfCandies содержит
значение 8, а numberOfSiblings — 4, JavaScript вычислил, сколько
будет 8 / 4, вернув в результате 2.
Имена переменных
Вводя имена переменных, будьте внимательны и не допускайте опеча-
ток. Даже если вы перепутаете строчные и заглавные буквы, интерпре-
татор JavaScript не поймет, чего вы от него хотите! Например, если вы
случайно введете имя numberOfCandies со строчной буквой c, воз-
никнет ошибка:
numberOfcandies / numberOfSiblings;
Reference
ReferenceError: numberOfcandies is not defined
error —
ошибка
данных
Увы, JavaScript следует вашим указаниям буквально. Если вы непра-
вильно ввели имя переменной, JavaScript не поймет, что вы имели в виду,
и выдаст сообщение об ошибке.
Еще один нюанс именования переменных в JavaScript — в именах
не должно быть пробелов, из-за чего они могут оказаться сложными для
чтения. Если бы я назвал переменную numberofcandies, без заглавных
букв, читать программу стало бы труднее, поскольку неясно, где в этом
имени заканчиваются отдельные слова.
Один из обычных способов решения этой проблемы — писать каждое
слово с заглавной буквы: NumberOfCandies. Такую манеру именования
30 Часть I. Основы
называют верблюжьей записью, поскольку выпирающие
заглавные буквы напоминают верблюжьи горбы.
Имена переменных принято начинать со строчной
буквы, поэтому с заглавной буквы обычно пишут все слова
имени, кроме самого первого: numberOfCandies. В этой
книге я также использую эту форму верблюжьей записи;
впрочем, вы можете называть свои переменные как вам
угодно!
Создание новых переменных на основе
вычислений
Можно создавать новые переменные, выполняя матема-
тические действия с переменными, созданными ранее.
Давайте с помощью переменных выясним, сколько секунд
в году и каков ваш возраст в секундах! Но для начала разбе-
ремся, сколько секунд в одном часе.
Сколько секунд в часе
Сначала создадим две новые переменные — secondsInAMinute
Seconds
(количество секунд в минуте) и minutesInAHour (количество минут
in a minute —
в часе) — и присвоим им обеим значение 60 (поскольку, как мы знаем,
секунд
в минуте
в минуте 60 секунд, а в часе 60 минут). Теперь создадим переменную
secondsInAHour (количество секунд в часе), и пусть ее значение рав-
Minutes
няется secondsInAMinute умножить на minutesInAHour. И нако-
in a hour —
нец в строке введем secondsInAHour, что означает «покажи мне
минут в часе
содержимое переменной secondsInAHour», и JavaScript тут же выдаст
ответ: 3600.
var secondsInAMinute = 60;
var minutesInAnHour = 60;
var secondsInAnHour = secondsInAMinute * minutesInAnHour;
secondsInAnHour;
3600
Сколько секунд в сутках
Теперь создадим переменную hoursInADay (количество
Hours in a day —
часов в сутках) и присвоим ей значение 24. Затем созда-
часов в день
дим переменную secondsInADay (количество секунд
в сутках), и пусть она равняется secondsInAHour умно-
жить на hoursInADay. Запросив в строке значение
secondsInADay, получим 86 400 — именно столько
секунд в сутках.
2. Типы данных и переменные 31
var hoursInADay = 24;
var secondsInADay = secondsInAnHour * hoursInADay;
secondsInADay;
86400
Сколько секунд в году
Days in a year —
И наконец, создадим переменные daysInAYear (количество дней в году)
дней в году
и secondsInAYear (количество секунд в году): daysInAYear присвоим
значение 365, а secondsInAYear пусть равняется secondsInADay
умножить на daysInAYear. Запрашиваем значение secondsInAYear
и видим, что это число 31 536 000 (более 31 миллиона секунд!).
var daysInAYear = 365;
var secondsInAYear = secondsInADay * daysInAYear;
secondsInAYear;
31536000
Возраст в секундах
Теперь, зная, сколько секунд в году, вы можете запросто узнать свой воз-
раст в секундах (с точностью до последнего дня рождения). К примеру,
когда я пишу эти строки, мне 29 лет:
var age = 29;
age * secondsInAYear;
914544000
Чтобы вычислить свой возраст в секундах, введите тот же самый код,
но замените значение переменной age на ваш возраст. Или просто заме-
ните эту переменную на число, соответствующее вашему возрасту:
29 * secondsInAYear;
914544000
Смотрите-ка, мне исполнилось больше 900 миллионов секунд!
А вам?
Инкремент и декремент
Вам как программисту понадобится увеличивать или уменьшать зна-
чения числовых переменных на единицу. Например, у вас в программе
может быть переменная для подсчета, сколько раз за день вам сказали
32 Часть I. Основы
«Дай пять!». И при каждом новом приветствии эту переменную надо ...
Все права на текст принадлежат автору: Ник Морган.
Это короткий фрагмент для ознакомления с книгой.