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

либо это 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. В этой

книге я также использую эту форму верблюжьей записи;