Кирупа Чиннатхамби
JavaScript с нуля
Серия «Библиотека программиста»
Перевел с английского Д. Акуратер
Заведующая редакцией Ю. Сергиенко
Руководитель проекта А. Питиримов
Ведущий редактор К. Тульцева
Литературный редактор Н. Нефидова
Обложка В. Мостипан
Корректоры Н. Петрова, М. Одинокова
Верстка Е. Неволайнен
ББК 32.988.02-018
УДК 004.738.5
Кирупа Чиннатхамби
К43 JavaScript с нуля. — СПб.: Питер, 2021. — 400 с.: ил. — (Серия «Библиотека
программиста»).
ISBN 978-5-4461-1701-7
JavaScript еще никогда не был так прост! Вы узнаете все возможности языка программирования
без общих фраз и неясных терминов. Подробные примеры, иллюстрации и схемы будут понятны даже
новичку. Легкая подача информации и живой юмор автора превратят нудное заучивание в заниматель-
ную практику по написанию кода. Дойдя до последней главы, вы настолько прокачаете свои навыки,
что сможете решить практически любую задачу, будь то простое перемещение элементов на странице
или даже собственная браузерная игра.
16+ (В соответствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.)
ISBN 978-0136502890 англ. Authorized translation from the English language edition,
entitled JAVASCRIPT ABSOLUTE BEGINNER'S GUIDE, 2nd Edition
by KIRUPA CHINNATHAMBI, published by Pearson Education, Inc,
publishing as Que Publishing. © 2020 Pearson Education, Inc.
ISBN 978-5-4461-1701-7 © Перевод на русский язык ООО Издательство «Питер», 2021
© Издание на русском языке, оформление ООО Издательство «Питер», 2021
© Серия «Библиотека программиста», 2021
Права получены по соглашению с Pearson Education, Inc. Все права защищены. Никакая часть данной книги не мо-
жет быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
Изготовлено в России. Изготовитель: ООО «Прогресс книга».
Место нахождения и фактический адрес: 194044, Россия, г. Санкт-Петербург,
Б. Сампсониевский пр., д. 29А, пом. 52. Тел.: +78127037373.
Дата изготовления: 04.2021. Наименование: книжная продукция.
Срок годности: не ограничен.
Налоговая льгота — общероссийский классификатор продукции ОК 034-2014,
58.11.12 — Книги печатные профессиональные, технические и научные.
Импортер в Беларусь: ООО «ПИТЕР М», 220020, РБ, г. Минск,
ул. Тимирязева, д. 121/3, к. 214, тел./факс: 208 80 01.
Подписано в печать 24.03.21. Формат 70х100/16. Бумага офсетная. Усл. п. л. 32,250. Тираж 1000. Заказ
ОГЛАВЛЕНИЕ
Благодарности......................................................................................................... 18
Об авторе................................................................................................................. 18
От издательства...................................................................................................... 19
Введение .........................................................................................................20
Парле ву JavaScript?................................................................................................ 21
Связь со мной ......................................................................................................... 22
Глава 1. Hello, world!.......................................................................................23
Что такое JavaScript?.............................................................................................. 24
Hello, world! ............................................................................................................ 25
HTML-документ........................................................................................................26
Обзор кода: инструкции и функции....................................................................... 28
ЧАСТЬ I. Элементарно, Ватсон
Глава 2. Значения и переменные ..................................................................31
Использование переменных . ................................................................................ 32
Еще кое-что о переменных..................................................................................... 33
Именование переменных . ......................................................................................33
Что еще нужно знать об объявлении и инициализации переменных..................34
Глава 3. Функции ............................................................................................37
Что такое функция?................................................................................................. 39
Простая функция..................................................................................................... 40
Создание функции, принимающей аргументы...................................................... 44
Создание функции, возвращающей результат..................................................... 48
Ключевое слово return.............................................................................................48
Ранний выход из функции . .....................................................................................49
8 Оглавление
Глава 4. Условные обозначения: if…else и switch . ......................................51
Инструкция if…else ................................................................................................ 53
Встречайте: условные операторы! ........................................................................55
Создание более сложных выражений . ..................................................................57
Варианты инструкций if…else ................................................................................58
Фух ...........................................................................................................................60
Инструкция switch .................................................................................................. 60
Использование инструкции switch..........................................................................60
Сходство с инструкцией if…else.............................................................................64
Что же использовать . ............................................................................................ 66
Глава 5. Циклы for, while и do…while.............................................................68
Цикл for.................................................................................................................... 70
Стартовое значение.................................................................................................72
Шаг............................................................................................................................73
Условие, или продолжительность цикла ...............................................................73
Собирая все вместе.................................................................................................74
Некоторые примеры цикла for................................................................................ 75
Прерывание цикла . .................................................................................................75
Пропуск итерации ...................................................................................................76
Возврат назад ..........................................................................................................76
Числа использовать необязательно.......................................................................77
О нет! Он не сделал этого!.....................................................................................77
Другие циклы........................................................................................................... 77
Цикл while ................................................................................................................78
Цикл do...while..........................................................................................................78
Глава 6. Комментирование кода… Что за?!..................................................80
Что такое комментарии?......................................................................................... 81
Однострочные комментарии...................................................................................82
Многострочные комментарии.................................................................................83
Лучшие способы комментирования....................................................................... 84
ОГЛАВЛЕНИЕ 9
Глава 7. Таймеры.............................................................................................87
Задержка с помощью setTimeout .......................................................................... 87
Выполнение циклов с помощью setInterval............................................................89
Плавная анимация с помощью requestAnimationFrame . ......................................90
Глава 8. Область видимости переменных ....................................................93
Глобальная область видимости . ........................................................................... 94
Локальная область видимости .............................................................................. 95
Особенности областей видимости . ...................................................................... 97
Области блоков....................................................................................................... 97
Как JavaScript обрабатывает переменные............................................................100
Замыкания...............................................................................................................102
Глава 9. Замыкания........................................................................................103
Функции внутри функций...................................................................................... 104
Когда внутренние функции независимы . ........................................................... 108
Глава 10. Где можно размещать код?..........................................................115
Подход № 1: весь код в HTML‑документе........................................................... 118
Подход № 2: код существует в отдельном файле.............................................. 119
JS-файл ..................................................................................................................119
Ссылка на JavaScript-файл.....................................................................................120
Итак, какой подход использовать?....................................................................... 121
Да, мой код будет использоваться в нескольких документах!...........................123
Нет, мой код используется только в одном HTML‑документе...........................124
ЧАСТЬ II. Это объектно ориентированный мир, приятель!
Глава 11. Вывод сообщений в консоль........................................................126
Знакомство с консолью ....................................................................................... 127
Отображение консоли ......................................................................................... 128
Для тех, кому важны детали . .............................................................................. 131
10 Оглавление
Журналирование в консоли.................................................................................. 132
Знакомство с методом log.....................................................................................132
Предопределенный текст — не предел...............................................................134
Отображение предупреждений и ошибок............................................................135
Глава 12. О пицце, типах, примитивах и объектах . ...................................138
Сначала поговорим о пицце.................................................................................. 139
От пиццы к JavaScript............................................................................................ 141
Что такое объект?................................................................................................. 143
Предопределенные объекты в JavaScript . ......................................................... 145
Глава 13. Массивы.........................................................................................147
Создание массива ................................................................................................ 148
Обращение к значениям массива ....................................................................... 148
Добавление элементов ........................................................................................ 150
Удаление элементов............................................................................................. 151
Поиск элементов в массиве................................................................................. 152
Слияние массивов................................................................................................. 153
Отображение, фильтрация и сокращение массивов.......................................... 154
Консервативный способ........................................................................................ 154
Изменение каждого элемента с помощью map ................................................. 155
Фильтрация элементов..........................................................................................157
Получение одного значения из массива элементов . ........................................ 158
Экскурс в функциональное программирование.................................................. 161
Глава 14. Строки............................................................................................162
Основы................................................................................................................... 162
Свойства и методы строк . ................................................................................... 164
Обращение к отдельным символам . ...................................................................164
Совмещение (конкатенация) строк.......................................................................166
ОГЛАВЛЕНИЕ 11
Получение подстрок из строк...............................................................................167
Разделение строки с помощью split ....................................................................168
Поиск по строке ....................................................................................................169
Строки в нижнем и верхнем регистрах................................................................170
Глава 15. Когда примитивы ведут себя как объекты..................................172
Строки — это не единственная проблема . ........................................................ 173
Давайте все-таки выберем строки....................................................................... 173
Почему это важно ................................................................................................ 175
Глава 16. Числа..............................................................................................177
Использование чисел............................................................................................ 177
Операторы............................................................................................................. 178
Простые математические действия......................................................................179
Увеличение и уменьшение................................................................................... 180
Шестнадцатеричные и восьмеричные значения . .............................................. 181
Особые значения — Infinity и NaN ...................................................................... 182
Infinity......................................................................................................................182
NaN..........................................................................................................................183
Объект Math.......................................................................................................... 183
Константы...............................................................................................................184
Округление чисел..................................................................................................185
Тригонометрические функции .............................................................................186
Степени и квадратные корни . ..............................................................................186
Получение абсолютного значения........................................................................187
Случайные числа .................................................................................................. 187
Глава 17. Методы получения и изменения данных.....................................189
История двух свойств .......................................................................................... 190
Знакомство с геттерами и сеттерами . ............................................................... 192
Генератор крика.....................................................................................................193
12 Оглавление
Регистрирование действий ..................................................................................193
Проверка значения свойства.................................................................................194
Глава 18. Об объектах подробнее................................................................196
Знакомство с объектом........................................................................................ 196
Создание объектов................................................................................................197
Добавление свойств . ............................................................................................198
Удаление свойств...................................................................................................201
Что же происходит под капотом?.........................................................................202
Создание пользовательских объектов................................................................ 206
Ключевое слово this.............................................................................................. 210
Глава 19. Расширение встроенных объектов..............................................214
И снова приветствуем прототип!......................................................................... 215
Спорность расширения встроенных объектов.................................................... 220
Вы не контролируете будущее встроенного объекта.........................................220
Некоторую функциональность не следует расширять или переопределять.......220
Глава 20. Использование классов................................................................222
Синтаксис классов и создание объектов . .......................................................... 223
Создание объекта .................................................................................................223
Знакомьтесь с конструктором . ............................................................................225
Что помещается в класс........................................................................................227
Расширение объектов........................................................................................... 230
Глава 21. Логические типы и строгие операторы === и !==.....................236
Объект Boolean .................................................................................................... 237
Логическая функция.............................................................................................. 237
Операторы строгого равенства и неравенства................................................... 239
Глава 22. null и undefined..............................................................................242
Null.......................................................................................................................... 242
Undefined .............................................................................................................. 243
ОГЛАВЛЕНИЕ 13
ЧАСТЬ III. DOM, милый DOM
Глава 23. Все о JSON (объектная нотация JavaScript)................................246
Что такое JSON?................................................................................................... 246
Объект JSON изнутри........................................................................................... 250
Имена свойств........................................................................................................250
Значения ................................................................................................................250
Чтение данных JSON ........................................................................................... 254
Парсинг JSON-подобных данных в действительный JSON.................................256
Запись данных JSON?........................................................................................... 257
Глава 24. JS, браузер и DOM . .....................................................................258
Что делают HTML, CSS и JavaScript ................................................................... 258
HTML определяет структуру................................................................................ 259
Приукрась мой мир, CSS!..................................................................................... 261
Настало время JavaScript!.................................................................................... 262
Знакомьтесь с объектной моделью документа ................................................. 263
Объект window.......................................................................................................265
Объект document ..................................................................................................266
Глава 25. Поиск элементов в DOM..............................................................268
Знакомьтесь с семейством querySelector .......................................................... 269
querySelector...........................................................................................................270
querySelectorAll.......................................................................................................270
Таков синтаксис селектора CSS .......................................................................... 271
Глава 26. Модифицирование элементов DOM ..........................................274
Элементы DOM — они как объекты.................................................................... 275
Пора модифицировать элементы DOM............................................................... 277
Изменение значения текста элемента.................................................................279
Значения атрибутов...............................................................................................281
14 Оглавление
Глава 27. Cтиль контента..............................................................................284
Зачем устанавливать стили с помощью JavaScript?........................................... 285
Два подхода стилизации....................................................................................... 286
Установка стиля напрямую....................................................................................286
Добавление и удаление классов с помощью JavaScript......................................287
Проверка наличия значения класса..................................................................... 290
Углубление.............................................................................................................290
Глава 28. Перемещение по DOM.................................................................291
Поиск пути............................................................................................................. 292
Работа с братьями и родителями..........................................................................294
Давай заведем детей!............................................................................................295
Складываем все воедино...................................................................................... 296
Проверка наличия потомка . .................................................................................296
Обращение ко всем потомкам..............................................................................296
Прогулка по DOM . ................................................................................................297
Глава 29. Создание и удаление элементов DOM . .....................................298
Создание элементов............................................................................................. 299
Удаление элементов............................................................................................. 306
Клонирование элементов..................................................................................... 307
Глава 30. Браузерные инструменты разработчика.....................................313
Знакомство с инструментами разработчика....................................................... 314
Просмотр DOM . ....................................................................................................316
Отладка JavaScript . ...............................................................................................321
Знакомство с консолью ........................................................................................326
Инспектирование объектов . ................................................................................327
Журналирование сообщений . ..............................................................................328
ОГЛАВЛЕНИЕ 15
ЧАСТЬ IV. Полны событиями
Глава 31. События . .......................................................................................331
Что такое события?............................................................................................... 332
События и JavaScript............................................................................................. 334
1. Прослушивание событий...................................................................................334
2. Реагирование на события..................................................................................336
Простой пример ................................................................................................... 337
Аргументы и типы событий . ................................................................................ 339
Глава 32. Всплытие и погружение событий.................................................342
Событие опускается. Событие поднимается....................................................... 343
Знакомьтесь с фазами.......................................................................................... 346
Кому это важно?.................................................................................................... 349
Прерывание события . .......................................................................................... 349
Глава 33. События мыши . ............................................................................353
Знакомьтесь с событиями мыши . ....................................................................... 354
Одинарный или двойной клик ..............................................................................354
Наведение и отведение курсора...........................................................................356
События mousedown и mouseup . ........................................................................357
Событие услышано снова… и снова… и снова! . ................................................359
Контекстное меню ................................................................................................359
Свойства MouseEvent........................................................................................... 361
Глобальная позиция мыши....................................................................................361
Позиция курсора мыши в браузере .....................................................................362
Определение нажатой кнопки . ............................................................................362
Работа с колесиком мыши.....................................................................................364
Глава 34. События клавиатуры.....................................................................366
Знакомьтесь с событиями клавиатуры................................................................ 367
Использование событий ...................................................................................... 368
16 Оглавление
Свойства события Keyboard.................................................................................. 369
Примеры . .............................................................................................................. 370
Проверка нажатия конкретной клавиши..............................................................370
Совершение действий при нажатии клавиш стрелок . .......................................371
Определение нажатия нескольких клавиш..........................................................371
Глава 35. События загрузки страницы и прочее.........................................375
Что происходит в процессе загрузки страницы.................................................. 376
Стадия первая.........................................................................................................377
Стадия вторая.........................................................................................................377
Стадия третья.........................................................................................................378
DOMContentLoaded и load Events........................................................................ 379
Сценарии и их расположение в DOM.................................................................. 380
Элементы сценария async и defer........................................................................ 383
async . .....................................................................................................................384
defer.........................................................................................................................384
Глава 36. Обработка событий для нескольких элементов.........................387
Как все это делается?........................................................................................... 389
Плохое решение . ..................................................................................................390
Хорошее решение..................................................................................................391
Объединяя все сказанное . ...................................................................................394
Глава 37. Заключение....................................................................................396
Глоссарий.......................................................................................................398
В ЭТОЙ ГЛАВЕ:
1
y разберемся, почему JavaScript прекрасен;
y немного попотеем, разбирая простой код;
y узнаем, что нас ждет впереди.
HELLO, WORLD!
Суть HTML в отображении, а CSS — в хорошей картинке. С помощью
их обоих вы можете создать нечто прекрасное вроде примера с прогно-
зом погоды, доступного для просмотра здесь: [Link]
На рис. 1.1 показано, как это выглядит.
РИС. 1.1.
Приложение прогноза погоды — яркий пример дизайна страницы,
выполненного с помощью CSS
24 ГЛАВА 1. Hello, world!
Несмотря на то как изящно смотрятся сайты, выполненные с помощью
CSS и HTML, они до боли статичны. Они не подстроятся и не среагируют
на ваши действия. Эффект, созданный этой парочкой, напоминает не-
прерывный просмотр любимой серии «Друзей», что рано или поздно все
равно навеет на вас скуку. Сайты, которые вы используете часто (вроде
тех, что изображены на рис. 1.2), обладают некоторой степенью интер
активности и персонализации, что само по себе значительно выходит
за пределы возможностей HTML и CSS.
Для оживления контента на вашем сайте вам пригодится сторонний
помощник. Им вполне может стать JavaScript!
РИС. 1.2.
Примеры сайтов, функциональность которых во многом полагается на JavaScript
Что такое JavaScript?
JavaScript — это современный язык программирования и партнер
HTML и CSS. Если коротко, этот язык позволяет привнести в доку-
мент интерактивность. Вот краткий перечень возможностей, которые
предоставляет JavaScript:
y Прослушивание событий, будь то клик мыши или выполнение команды.
y Изменение HTML- и CSS-страниц после их загрузки.
y Задание незаурядных траекторий перемещения объектов по экрану.
Hello, world! 25
y Создание увлекательнейших браузерных игр вроде Cut the Rope.
y Обмен данными между сервером и браузером.
y Взаимодействие с веб-камерой, микрофоном и другими устрой-
ствами.
А также многое другое! Написание же JavaScript кода весьма несложно.
Вы комбинируете слова, большинство из которых встречается в англий-
ском языке, отдавая таким образом браузеру команды. Следующий
пример — некое сочетание классики JavaScript в новой доработке:
let defaultName = "JavaScript";
function sayHello(name) {
if (name == null) {
alert("Hello, " + defaultName + "!");
} else {
alert("Hello, " + name + "!");
}
}
Ничего страшного, если вам пока ничего не понятно. Просто обратите
внимание на то, как этот код выглядит. Заметьте, что использовано
много английских слов: function, if, else, alert, name. Помимо них
есть еще странные символы и знаки из тех областей клавиатуры, куда
взгляд обычно не падает. Но скоро, по мере того как их количество
начнет расти на ваших глазах, вы постепенно разберетесь, за что от-
вечает каждый элемент приведенного кода.
Как бы там ни было, пока что этой вспомогательной информации до-
статочно. Хоть вы, возможно, ожидали найти здесь историю JavaScript
и справку о его создателях, я не буду утомлять вас подобными скучными
вещами. Вместо этого мне хотелось бы, чтобы вы немного потрениро-
вались в написании JavaScript-кода и к концу урока создали что-нибудь
милое и простое, отображающее текст в браузере.
Hello, world!
Возможно, сейчас вы ощутите недостаток навыков для написания кода.
Тем более если вы не знакомы с программированием даже в общих
чертах. Но уже скоро вы поймете, что JavaScript не такой бесячий
и сложный, каким ему хочется казаться. Итак, приступим.
26 ГЛАВА 1. Hello, world!
ВАЖНО ЗНАТЬ ОСНОВЫ ВЕБ-ПРОГРАММИРОВАНИЯ
Чтобы начать писать на JavaScript, вам нужно знать основы создания веб-
страниц, использования редактора кода и добавления HTML/CSS. Если вы
не знакомы с этими вещами, призываю вас для начала прочесть статью
«Создание вашей первой веб-страницы» ([Link]
building_your_first_web_page.htm). Это поможет плавно настроиться на
восприятие дальнейшей информации.
HTML-документ
Первое, что вам нужно, — это открыть HTML-документ. В этом доку-
менте вы будете записывать свой код на JavaScript. Затем запустите
свой любимый редактор кода. Если у вас такового пока нет, рекомендую
использовать Visual Studio Code. После запуска редактора перейдите
к созданию нового файла. В Visual Studio Code вы увидите вкладку
Untitled, как на рис. 1.3.
РИС. 1.3.
Вкладка Untitled-1 в Visual Studio Code
Сохраните созданный файл через меню File | Save. Вам нужно указать
его имя и рабочий стол. После сохранения добавьте в него следующий
код HTML:
Hello, world! 27
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>An Interesting Title Goes Here</title>
<style>
</style>
</head>
<body>
<script>
</script>
</body>
</html>
После добавления этого HTML сохраните документ для подтвержде-
ния изменений. Теперь можно посмотреть, как будет выглядеть ваша
страница в браузере.
Проследуйте на рабочий стол в проводнике или поисковике и двойным
щелчком откройте файл hello_world.htm. Вы увидите, как появится ваш
браузер по умолчанию, который отобразит имя этого файла. На рис. 1.4
показано примерно то, что вы увидите у себя на экране.
Если все сработало, как надо, вы увидите пустую страницу, и это вполне
нормально. Несмотря на то что страница имеет содержимое, на ней
ничего не отображается. Скоро мы это исправим. Для этого потребуется
вернуться в редактор и обратиться к тегу <script>, который находится
в нижней части HTML:
<script>
</script>
Тег script выступает в роли контейнера, в который вы можете по-
мещать любой JavaScript-код для запуска. Мы же хотим отобразить
слова hello, world! в диалоговом окне, появляющемся при загрузке
HTML-страницы. Для этого внутрь сегмента script добавим следую-
щую строку:
<script>
alert("hello, world!");
</script>
28 ГЛАВА 1. Hello, world!
Сохраните файл HTML и запустите его в браузере. Обратите внимание
на то, что увидите после загрузки страницы. Должно появиться диа-
логовое окно (рис. 1.5).
Если это была ваша первая попытка написания кода на JavaScript, при-
мите мои поздравления! Теперь давайте разберем, как именно все это
у вас получилось.
РИС. 1.4.
Проименованная вкладка в Visual Studio Code
РИС. 1.5.
Так должно выглядеть диалоговое окно hello, world
Обзор кода: инструкции и функции
Вы только что написали очень простую инструкцию JavaScript. Инструк-
ция состоит из логического набора действий, которые должен выпол-
нить браузер. В обычном приложении содержится великое множество
инструкций. В нашем же случае есть только одна:
alert("hello, world!");
Обзор кода: инструкции и функции 29
Понять, что перед вами инструкция, можно, обратив внимание на ее
последний знак. Обычно это точка с запятой (;).
Внутри инструкции вы увидите всевозможный незатейливый жаргон
на JavaScript. И наш код длиной в одну строку — не исключение. Мы
также видим странный элемент alert, который задает отображение.
Это пример привычного английского слова, имеющего схожее значение
в мире языка JavaScript. Оно призвано привлечь ваше внимание путем
отображения некоего текста.
Если быть более точным, слово alert — это то, что часто называют
функцией. Вы будете использовать функции повсеместно. По своей
сути они являются фрагментами переиспользуемого кода, который
что-то делает. Это «что-то» может определяться вами, сторонней
библиотекой или же самим фреймворком JavaScript. В нашем случае
код, который дает функции alert магическую способность отображать
диалоговое окно с переданным в нее сообщением, существует в глуби-
нах браузера. Все, что вам на самом деле нужно знать, так это то, что
для использования функции alert ее нужно просто вызвать и передать
ей сообщение для отображения. Все остальное будет сделано за вас.
Вернемся к нашему примеру. Обратите внимание на то, как я определяю
отображение текста hello, world!. Я заключаю эти слова в кавычки:
<script>
alert("hello, world!");
</script>
При работе с текстом (наиболее часто используемый термин — стро-
ка) он всегда заключается в одинарные или двойные кавычки. И как
бы странно это ни прозвучало, но у каждого языка программирования
свои особенности. И эта — одна из многих, с которыми вы столкнетесь
при дальнейшем знакомстве с JavaScript. Очень скоро мы рассмотрим
строки более подробно, а пока просто наслаждайтесь их видом.
Сделаем еще шаг. Вместо hello, world! укажите свои имя и фамилию.
Вот пример кода, в котором использовано мое имя:
<script>
alert("Kirupa Chinnathambi!");
</script>
Запустите приложение, и тогда вы увидите свое имя в диалоговом
окне (рис. 1.6).
30 ГЛАВА 1. Hello, world!
РИС. 1.6.
Теперь в диалоговом окне отображается ваше имя
Проще простого, не так ли? Вы можете вписать в строку что угодно:
имя питомца, название любимого сериала и т. д. — а JavaScript все
это отобразит.
КОРОТКО О ГЛАВНОМ
В этой главе вы познакомились с написанием кода на JavaScript. В процессе
этого знакомства я дал некоторые принципы и термины. Разумеется, я не
жду, что вы все это сразу запомните. В следующих уроках мы возьмем
наиболее интересные части пройденного материала и проработаем их
более детально. В конце концов, я уверен, что с помощью JS вам хочется
создавать штуки, выходящие далеко за рамки примитивного отображения
текста с помощью диалогового окна.
Забегая вперед, скажу, что в конце каждой главы есть набор ссылок, веду-
щих на ресурсы, созданные мной или другими разработчиками. Вы сможете
почерпнуть больше информации, взглянуть на пройденный материал под
другим углом, а также опробовать свои силы на практике, решая более
сложные примеры. Рассматривайте материал из этой книги как трамплин,
позволяющий допрыгнуть до более крутых штук.
Если у вас есть какие-либо вопросы относительно этой главы, оставляйте
свои сообщения на форуме [Link] где вам оперативно
ответит кто-то из крутых разработчиков или я.
В ЭТОЙ ГЛАВЕ:
y узнаем, как использовать значения для хранения
данных;
2
y создадим свой код, задавая значения;
y вкратце ознакомимся с соглашениями о при-
своении имен переменных.
ЗНАЧЕНИЯ И ПЕРЕМЕННЫЕ
Принято считать, что каждый фрагмент данных на JavaScript, предо-
ставляемый или используемый нами, содержит значение. Из уже рас-
смотренного примера мы узнали, что вместо слов hello, world! могут
быть любые слова, с помощью которых мы задаем функцию alert:
alert("hello, world!");
В JavaScript эти слова несут в себе определенную информацию и счи-
таются значениями. Мы могли об этом особенно не задумываться,
набирая их на клавиатуре, но во вселенной JavaScript каждый элемент
данных, с которым мы имеем дело, считается значением.
Итак, почему это так важно понимать? А все потому, что нам предстоит
много работать со значениями. И важно, чтобы эта работа не свела вас
с ума. Чтобы облегчить себе жизнь, вам пригодятся умения:
y легко идентифицировать эти значения;
y повторно их использовать в ходе разработки приложения, не при-
бегая к лишнему дублированию самого значения.
Две вещи, на которые предстоит потратить все наше оставшееся вре-
мя, — это переменные. Давайте рассмотрим их поподробнее.
32 ГЛАВА 2. Значения и переменные
Использование переменных
Переменная — это идентификатор значения. Чтобы не набирать hello,
world! каждый раз, когда вы хотите использовать этот фрагмент для
написания кода приложения, можно присвоить эту фразу переменной
и использовать ее тогда, когда нужно. Еще чуть-чуть, и вам станет
гораздо понятнее — я обещаю!
Есть несколько способов, как использовать переменные. В большинстве
случаев лучше всего полагаться на ключевое слово let, после которого
вы можете задать имя своей переменной:
let myText
В этой строке кода мы объявляем переменную myText. На данный
момент наша переменная просто объявлена и не содержит никакого
значения, то есть является пустой оболочкой.
Давайте исправим это через инициализацию переменной значением.
К примеру, hello, world!.
let myText = "hello, world!";
С этого момента при выполнении кода значение hello, world! будет
ассоциироваться с нашей переменной myText. Теперь соберем все части
в единое выражение. Если у вас все еще открыт файл hello_world.htm,
замените содержимое тега script следующим (или создайте новый
файл, добавив в него следующий код):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>An Interesting Title Goes Here</title>
<style>
</style>
</head>
<body>
<script>
let myText = "hello, world!";
alert(myText);
</script>
</body>
</html>
Еще кое-что о переменных 33
Обратите внимание, что мы больше не передаем текст hello, world!
в функцию alert напрямую. Вместо этого мы передаем в нее имя пере-
менной myText. Конечный результат такой же, то есть при выполнении
этой строчки отобразится функция alert с надписью hello, world!.
Благодаря этому изменению нам достаточно определить hello, world!
в одном месте кода. И если мы в дальнейшем захотим изменить hello,
world!, к примеру, на The dog ate my homework! (Собака съела мою
домашку!), то все, что нам понадобится, — это просто изменить фразу,
определенную в переменной myText:
let myText = "The dog ate my homework!";
alert(myText);
Теперь во всех секциях кода при обращении к переменной myText
мы будем видеть новый текст. Невозможно придумать ничего более
удобного и значительно экономящего время, особенно при работе со
сложными приложениями, что позволяет вносить изменение в одном
месте, и при этом это действие отразится в остальных частях кода.
Вы увидите другие, менее тривиальные примеры со значимыми пере-
менными далее.
Еще кое-что о переменных
Материал из предыдущей главы позволяет нам сильно продвинуться
вперед. По меньшей мере, в той части, которая касается знакомства
с JavaScript. Сейчас мы не станем слишком углубляться в переменные,
так как займемся ими в следующих главах, когда рассмотрим код с важ-
ными переменными посложнее. И прежде чем закругляться, затронем
еще несколько моментов.
Именование переменных
Мы вольны именовать переменные так, как нам подходит. Игнорируя
то, какие имена нам следует выбрать с точки зрения философских,
культурных или стилистических предпочтений, с технической точки
зрения язык JavaScript очень гибок и позволяет включать в них символы.
Однако эта гибкость не безгранична, поэтому при именовании следует
помнить о следующем:
34 ГЛАВА 2. Значения и переменные
y Имя переменной может содержать один символ или столько, сколько
вы хотите, — только представьте, тысячи тысяч символов!
y Переменные могут начинаться с буквы, нижнего подчеркивания или
символа $, но не могут начинаться с числа.
y Следом за первым символом переменные могут состоять из любого
сочетания букв, подчеркиваний, чисел и $. Мы также можем смеши-
вать и комбинировать нижний и верхний регистры, пока не надоест.
y Пробелы не допускаются.
Ниже приведены некоторые примеры имен переменных:
let myText;
let $;
let r8;
let _counter;
let $field;
let thisIsALongVariableName_butItCouldBeLonger;
let $abc;
let OldSchoolNamingScheme;
Чтобы определить, является ли имя переменной допустимым, восполь-
зуйтесь прекрасным сервисом по проверке имен переменных JavaScript
[Link]
Помимо допустимых имен есть еще другие важные моменты, такие
как соглашения о присвоении имен и то, сколько людей обычно име-
нуют переменные и другие компоненты, которые вы идентифицируете
с именем. Мы затронем эти темы в следующих главах.
Что еще нужно знать об объявлении
и инициализации переменных
Одна из особенностей JavaScript, о которой вы скоро узнаете, состоит
в том, что это всепрощающий язык, который может дать вам множество
поблажек.
Объявление переменной не обязательно
Например, нам не обязательно использовать ключевое слово let, чтобы
объявить переменную. Можно просто написать так:
myText = "hello, world!";
alert(myText);
Еще кое-что о переменных 35
Обратите внимание, что переменная myText использована, не будучи
формально объявленной с помощью ключевого слова let. И хотя так де-
лать и не рекомендуется, это считается вполне допустимым. В конечном
счете мы получаем переменную с именем myText. Единственный нюанс
состоит в том, что при объявлении переменной подобным образом мы
делаем это глобально. Не беспокойтесь, если последнее предложение
вам не понятно. Мы поговорим о значении слова «глобально» позже,
когда рассмотрим область видимость переменных.
Объявлять и инициализировать переменные
в отдельных строках — это круто!
Стоит упомянуть, что объявление и инициализация переменной не
обязательно должны быть частью одной инструкции. Можно разделить
эти действия на разные строки:
let myText;
myText = "hello, world!";
alert(myText);
На практике мы будем разделять их постоянно.
Изменение значений переменных и ключевое слово const
И наконец, отмечу, что мы можем менять значение переменной, объ-
явленной с let, на что угодно и когда угодно:
let myText;
myText = "hello, world!";
myText = 99;
myText = 4 * 10;
myText = true;
myText = undefined;
alert(myText);
Если вы работали с более требовательными языками, которые не по-
зволяют переменным хранить разные типы данных, то знайте, что эту
гибкость JavaScript одни восхваляют, а другие ненавидят. Тем не менее
в JavaScript есть способ запретить изменять значения переменной по-
сле инициализации. Это можно сделать с помощью ключевого слова
const, с которым мы можем объявлять и инициализировать переменные:
const siteURL = "[Link]
alert(siteURL);