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

Например, перед тем как пойти в школу, вы хотите убедиться, что

приняли душ, атакже взяли рюкзак. Если оба эти условия истинны

(true), можно идти в школу, но если хоть одно ложно (false), вы еще

не готовы.

var hadShower = true;

Had shower —

var hasBackpack = false;

принял душ

hadShower && hasBackpack;

Has backback —

false

есть рюкзак

Здесь мы устанавливаем переменную hadShower («вы при-

няли душ?») в true, а переменную hasBackpack («вы взяли

рюкзак?») в false. Далее, вводя hadShower && hasBackpack,

мы спрашиваем JavaScript: «равны ли оба этих значения

true»? Поскольку это не так (рюкзак не в руках), JavaScript

возвращает false (то есть вы не готовы идти в школу).

Давайте повторим попытку, установив на этот раз обе

переменные в true:

var hadShower = true;

var hasBackpack = true;

hadShower && hasBackpack;

true

Теперь JavaScript сообщает нам, что hadShower &&

hasBackpack равняется true. Можно идти в школу!

|| (ИЛИ)

Булев оператор || означает «или». Так его и следует называть — «или»,

или даже «или-или», хотя некоторые называют его «пайпс», поскольку

среди англоязычных программистов символ | зовется «пайп» («труба»).

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

что как минимум одно из них равняется true.

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

с собой к обеду фрукты, причем вам неважно, будет это яблоко, или

апельсин, или и то и другое. С помощью JavaScript можно проверить,

есть ли у вас хотя бы один из этих плодов:

Has apple —

var hasApple = true;

есть яблоко

var hasOrange = false;

Has orange —

hasApple || hasOrange;

есть апельсин

true

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

Выражение hasApple || hasOrange даст true, если либо

hasApple («взяли яблоко?»), либо hasOrange («взяли апельсин?»), либо

обе эти переменные имеют значение true. Однако если обе они равны

false, выражение даст false (то есть у вас с собой нет ни одного

фрукта).

! (НЕ)

Оператор ! означает «не» — так его и называйте. Используйте этот опе-

ратор, чтобы превратить false в true или, наоборот, true в false. Это

полезно для работы со значениями-противоположностями. Например:

Is weekend —

выходной

var isWeekend = true;

Need to shower

var needToShowerToday = !isWeekend;

today — нужно

needToShowerToday;

принять душ

false

сегодня

В этом примере мы установили переменную isWeekend («сейчас

выходной?») в true. Затем мы дали переменной needToShowerToday

(«сегодня нужно принять душ?») значение !isWeekend. Оператор ! пре-

образует значение в противоположное — то есть, если isWeekend равно

true, !isWeekend даст нам не true (то есть false). Соответственно,

запрашивая значение needToShowerToday, мы получаем false

(сегодня выходной, так что мыться совсем не обязательно).

Поскольку needToShowerToday равно false, !needToShowerToday

даст true:

needToShowerToday;

false

!needToShowerToday;

true

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

душ, — истина (true).

Совмещение логических операторов

Операторы дают больше возможностей, если использовать их совместно.

Допустим, вам нужно идти в школу, если сегодня не выходной, и вы при-

няли душ, и у вас с собой есть яблоко или апельсин. Вот как с помощью

JavaScript проверить, выполняются ли все эти условия:

var isWeekend = false;

var hadShower = true;

var hasApple = false;

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

var hasOrange = true;

Should go

var shouldGoToSchool = !isWeekend && hadShower && (hasApple || 

to school —

hasOrange);

нужно идти

shouldGoToSchool;

в школу

true

В данном случае сегодня не выходной, вы приняли душ, у вас нет

с собой яблока, зато есть апельсин — значит, нужно идти в школу.

Выражение hasApple || hasOrange записано в скобках, поскольку

нам важно убедиться, что эта проверка выполнена в первую очередь.

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

в логических выражениях он выполняет && прежде ||.

Сравнение чисел с помощью булевых значений

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

проверка подразумевает простой ответ: да или нет. Например, пред-

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

ционов имеет ограничение: туда допускаются посетители ростом

не менее 150 см (иначе они могут вывалиться из кабинки!). Когда

кто-нибудь хочет прокатиться, он сообщает свой рост, и вам нужно

понять, больше названное число или меньше.

Больше

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

оператор «больше» (>). Например, для проверки, что рост посети-

теля (155 см) больше, чем ограничение по росту (150 см), мы можем

задать переменной height (рост посетителя) значение 155, а пере-

менной heightRestriction (ограничение по росту) значение 150,

а затем использовать оператор > для сравнения двух переменных:

var height = 155;

Height —

var heightRestriction = 150;

высота

height > heightRestriction;

Height

true

restriction —

ограничение

по росту

Введя height > heightRestriction, мы просим JavaScript показать

нам, больше ли первое значение, чем второе, или нет. В данном случае

посетитель достаточно высок!

Но что если рост посетителя в точности равен 150 см?

var height = 150;

var heightRestriction = 150;

height > heightRestriction;

false

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

Нет, посетитель недостаточно высок! Хотя если ограничение

по росту — 150 см, наверное, стоит пускать и тех, чей рост в точности

равен 150 см? Это нужно исправить. К счастью, в JavaScript есть еще

один оператор, >=, что означает «больше или равно».

var height = 150;

var heightRestriction = 150;

height >= heightRestriction;

true

Ну вот, теперь лучше — 150 удовлетворяет условию «больше или

равно 150».

Меньше

Оператор, противоположный «больше» (>), зовется оператором «меньше» (<).

Он пригодится, если аттракцион предназначен только для маленьких

детей. Например, пусть рост посетителя равен 150 см, но по правилам

аттракциона на него допускаются посетители ростом не более 120 см:

var height = 150;

var heightRestriction = 120;

height < heightRestriction;

false

Мы хотим убедиться, что рост посетителя меньше ограничения,

и поэтому используем <. Поскольку 150 не меньше 120, ответом будет

false (человек ростом 150 см слишком высок для этого аттракциона).

И, как вы, наверное, уже догадались, есть оператор <=, что означает

«меньше или равно».

var height = 120;

var heightRestriction = 120;

height <= heightRestriction;

true

Посетителю, рост которого равен 120 см, вход все еще разрешен.

Равно

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

равенства (===) — это оператор «равно». Будьте осторожны, не путайте ===

с одиночным знаком равенства (=), поскольку === означает «равны ли эти

два числа?», а = означает «положить значение справа в переменную слева».

Иначе говоря, === задает вопрос, а = присваивает переменной значение.

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

При использовании = имя переменной должно стоять слева, а зна-

чение, которое вы хотите в эту переменную положить, справа. Однако

=== служит лишь для проверки двух значений на равенство, поэтому

неважно, какое значение с какой стороны стоит.

Чико,

Харпо

Представьте, что вы загадали своим друзьям Чико, Харпо и Граучо

и Граучо —

число, а именно число 5. Вы облегчили им задачу, сообщив, что это число

псевдонимы

от 1 до 9, и ваши друзья начали угадывать. Сначала присвоим перемен-

троих

ной mySecretNumber значение 5. Первый из играющих, Чико, загады-

из братьев

Маркс,

вает ответ 3, который мы кладем в переменную chicoGuess. Поглядим,

американских

что будет дальше:

звезд немой

комедии.

var mySecretNumber = 5;

My secret

var chicoGuess = 3;

number — мое

mySecretNumber === chicoGuess;

загаданное

false

число

var harpoGuess = 7;

Chico

guess —

mySecretNumber === harpoGuess;

догадка

false

Чико (Харпо,

var grouchoGuess = 5;

Граучо)

mySecretNumber === grouchoGuess;

true

Число, которое вы загадали, находится в переменной mySecretNumber.

Переменные chicoGuess, harpoGuess и grouchoGuess соответствуют

предположениям ваших друзей. Далее с помощью оператора === можно

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

Граучо, назвал 5 и победил.

Сравнивая два числа с помощью ===, вы получаете true, только

когда оба числа совпадают. Поскольку в grouchoGuess находится значе-

ние 5, а mySecretNumber также равно 5, выражение mySecretNumber

=== grouchoGuess вернет true. Другие варианты ответа не совпадают

с mySecretNumber, поэтому сравнение с ними даст false.

Также с помощью === можно сравнить две строки или два буле-

вых значения. Если же сравнивать так значения разных типов, ответом

всегда будет false.

Двойной знак равенства

Еще немного запутаю вас: в JavaScript есть еще один оператор срав-

нения (двойное равно, ==), который означает «практически равно».