JavaScript для детей. Самоучитель по программированию | страница 29
из братьев
Маркс,
вает ответ 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 есть еще один оператор срав-
нения (двойное равно, ==), который означает «практически равно».
Используйте его для проверки двух значений на соответствие друг другу,
даже если одно из них строка, а другое — число. Все значения принадле-
жат к тому или иному типу, так что число 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!