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!