JavaScript для детей — страница 9 из 48

Используйте его для проверки двух значений на соответствие друг другу,

даже если одно из них строка, а другое — число. Все значения принадле-

жат к тому или иному типу, так что число 5 отличается от строки «5»,

хоть они и выглядят похоже. Если сравнить их с помощью ===, JavaScript

ответит, что значения не равны. Однако при сравнении через == они ока-

жутся равными:

46 Часть I. Основы

var stringNumber = "5";

String number —

здесь

var actualNumber = 5;

«строка-число»

stringNumber === actualNumber;

false

Actual number —

stringNumber == actualNumber;

число

true

Возможно, тут вы подумаете: «Похоже, двойное равно удобнее, чем

тройное!» Однако будьте очень осторожны: двойное равно может вве-

сти вас в заблуждение. Например, как считаете, 0 равен false? А строка

"false" значению false? При сравнении через двойное равно 0 оказы-

вается равным false, а строка "false" не равна false:

0 == false;

true

"false" == false;

false

Дело в том, что, сравнивая значения через двойное равно, JavaScript пер-

вым делом пытается преобразовать их к одному типу. В данном случае булево

значение он преобразует в числовое — при этом false становится нулем,

а true — единицей. Поэтому, сравнивая 0 == false, вы получите true!

Из-за всех этих странностей лучше пока пользуйтесь только опера-

тором ===.

ПОПР ОБУ ЙТЕ !

Вас попросили написать JavaScript-код для автоматической

системы управления кинотеатром. Задача состоит в том,

чтобы опре делить, пускать ли зрителя на фильм «с 12 лет

и старше» или нет.

Правила таковы: если посетителю 12 лет или больше,

он может проходить. Если ему еще не исполнилось 12, но его

сопровождает взрослый, пусть тоже проходит. Во всех

остальных случаях вход запрещен.

var age = 11;

var accompanied = true;

Accompanied —

???

в сопровождении

Допишите этот код, чтобы он определял, можно ли 11-летнему посетителю

посмотреть фильм (возраст задается в переменной age, а переменная

accompanied равна true, если посетитель пришел со взрослым).

Попробуйте поменять эти значения (например, пусть в age будет число 12,

а в accompanied — true) и убедитесь, что код по-прежнему находит

верное решение.

2. Типы данных и переменные 47

undefined и null

И наконец, в JavaScript есть два особых значения, они называются

undefi ned и null. Оба они означают «пусто», но смысл этого в обоих

случаях немного различается.

JavaScript использует значение undefi ned, когда не может найти иного

значения. Например, если, создав новую переменную, вы не присвоите ей

значение с помощью оператора =, ее значением будет undefi ned:

My variable —

var myVariable;

моя переменная

myVariable;

undefined

А значение null обычно используется, чтобы явно обозначить —

«тут пусто».

var myNullVariable = null;

My null variable —

myNullVariable;

моя пустая

null

переменная

Пока вы будете нечасто использовать undefi ned и null. Вы получите

undefi ned, если создадите переменную и не присвоите ей значения, —

JavaScript всегда возвращает undefi ned, когда значение не определено.

Однако специально undefi ned обычно ничему не присваивают; если вам

захочется обозначить, что в переменной «пусто», используйте для этого null.

Иначе говоря, null нужен, чтобы явно показать отсутствие значе-

ния, и порой это бывает полезно. Например, есть переменная, обозна-

чающая ваш любимый овощ. Если вы терпеть не можете все без исклю-

чения овощи, имеет смысл дать переменной «любимый овощ» значение

null.

Этим вы явно покажете любому, кто увидит ваш код, что у вас нет

любимого овоща. Однако если в переменной будет undefi ned, кто-

нибудь может подумать, что вы просто еще не приписали ей значения.

Что мы узнали

Теперь вы знаете все базовые типы данных JavaScript — это числа, строки

и булевы значения, — а также специальные значения null и undefi ned.

Числа нужны для всего, что связано с математикой, строки — для работы

с текстом, а булевы значения — для разрешения вопросов, на которые

можно ответить «да» или «нет». Значения же null и undefi ned дают нам

способ обозначать то, чего не существует.

В следующих двух главах мы поговорим о массивах и объектах —

и то и другое представляет собой способ объединения простых типов

данных в более сложные наборы значений.

3

М АСС И В Ы

Мы уже изучили числа и строки — типы данных, которые можно хранить

и использовать в своих программах. Но одни лишь числа и строки — это

как-то скучновато; не столь уж многое можно сделать со строкой как

таковой. С помощью массивов JavaScript позволяет создавать и группи-

ровать данные более любопытными способами. А по сути своей мас-

сив — всего лишь список, где хранятся другие значения.

Например, если вашему другу интересно, какие три вида динозав-

ров вам нравятся больше всего, вы можете создать массив и расположить

там по порядку названия этих динозавров:

My top three

var myTopThreeDinosaurs = ["Тираннозавр", "Велоцираптор", 

dinosaurs —

"Стегозавр"];

три моих

любимых

динозавра

Теперь вместо того, чтобы показывать своему другу три отдель-

ные строки, вы можете воспользоваться единственным массивом

myTopThreeDinosaurs.

Зачем нужны массивы?

Вернемся к нашим динозаврам. Положим, вы решили написать про-

грамму для учета всех видов динозавров, которые вам известны. Вы

можете создать для каждого вида отдельную переменную:

49

Dinosaur —

var dinosaur1 = "Тираннозавр";

динозавр

var dinosaur2 = "Велоцираптор";

var dinosaur3 = "Стегозавр";

var dinosaur4 = "Трицератопс";

var dinosaur5 = "Брахиозавр";

var dinosaur6 = "Птеранодон";

var dinosaur7 = "Апатозавр";

var dinosaur8 = "Диплодок";

var dinosaur9 = "Компсогнат";

Однако пользоваться этим списком не слишком удобно — у вас

есть девять переменных там, где можно обойтись лишь одной. А теперь

представьте, что динозавров в программе не девять, а 1000! Пришлось

бы создать 1000 отдельных переменных, работать с которыми было бы

решительно невозможно.

Это похоже на список покупок, составленный так, что каждая

покупка указана на отдельном листе бумаги. На одном листке написано

«яйца», на другом — «хлеб», на следующем — «апельсины». Большинство

людей предпочли бы видеть весь список на одном листе бумаги. Так

не проще ли сгруппировать всех динозавров в один список?

Вот для этого и нужны массивы.

Создание массива

Чтобы создать массив, используйте квадратные скобки []. Фактически

для задания пустого массива достаточно лишь пары квадратных скобок:

[];

[]

50 Часть I. Основы

Но кому нужен пустой массив? Давайте-ка заполним его ди

но

-

заврами!

Чтобы создать массив со значениями, нужно перечислить эти значе-

ния внутри квадратных скобок, разделяя их запятыми. Отдельные зна-

чения, хранящиеся в массиве, называют элементами. В данном примере

все элементы будут строковыми (это названия любимых динозавров),

поэтому запишем их в кавычках. Сохраним наш массив в переменной

с именем dinosaurs:

var dinosaurs = ["Тираннозавр", "Велоцираптор", "Стегозавр", 

"Трицератопс", "Брахиозавр", "Птеранодон", "Апатозавр", 

"Диплодок", "Компсогнат"];

Длинный список сложно читать, когда он записан одной строкой, но,

к счастью, это не единственный способ форматирования кода при соз-

дании массива. Вы можете поставить открывающую квадратную скобку

на одной строке, каждый элемент писать с новой строки и последней

строкой поставить закрывающую квадратную скобку:

var dinosaurs = [

"Тираннозавр",

"Велоцираптор",

"Стегозавр",

"Трицератопс",

"Брахиозавр",

"Птеранодон",

"Апатозавр",

"Диплодок",

"Компсогнат"

];

Чтобы ввести такой код в консоли, вам придется нажимать одно-

временно с ENTER клавишу SHIFT каждый раз, когда нужно перейти

к новой строке. Иначе JavaScript попытается выполнить то, что вы уже

ввели, даже если команда еще не завершена. Поэтому при работе в кон-

соли проще записывать массивы одной строкой.

Для JavaScript неважно, отформатируете вы код, расположив весь

массив на одной строке или на нескольких строках по частям. Сколько бы

ни стояло переносов, JavaScript увидит один и тот же массив — в нашем

случае состоящий из девяти строк.

3. Массивы 51

Доступ к элементам массива

Чтобы получить доступ к элементам массива, используйте квадратные

скобки с индексом нужного вам элемента, как в этом примере:

dinosaurs[0];

"Тираннозавр"

dinosaurs[3];

"Трицератопс"

Индекс — это номер элемента, в котором хранится значение.

Аналогично символам в строке, первому элементу массива соответствует

индекс 0, второму — 1, третьему — 2 и т. д. Поэтому, запросив индекс

0 в массиве dinosaurs, мы получили "Тираннозавр" (это первый эле-

мент), а запросив индекс 3 — "Трицератопс" (четвертый элемент).

Возможность доступа к отдельным элементам массива очень полез-

на. Например, если вы хотите показать кому-то самого-самого любимого

своего динозавра, ни к чему показывать весь массив. Вместо этого про-

сто возьмите первый элемент:

dinosaurs[0];

"Тираннозавр"

52 Часть I. Основы

Создание и изменение элементов