Часть I. Основы
При использовании
= имя переменной должно стоять слева, а зна-
чение, которое вы хотите в эту переменную положить, справа. Однако
=== служит лишь для проверки двух значений на равенство, поэтому
неважно, какое значение с какой стороны стоит.
Представьте, что вы загадали своим друзьям Чико, Харпо и Граучо
число, а именно число 5. Вы облегчили им задачу, сообщив, что это число
от 1 до 9, и ваши друзья начали угадывать. Сначала присвоим перемен-
ной
mySecretNumber значение 5. Первый из играющих, Чико, загады-
вает ответ 3, который мы кладем в переменную
chicoGuess. Поглядим,
что будет дальше:
var mySecretNumber = 5;
var chicoGuess = 3;
mySecretNumber === chicoGuess;
false
var harpoGuess = 7;
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
ответит, что значения не равны. Однако при сравнении через
== они ока-
жутся равными:
Чико,
Харпо
и Граучо
—
псевдонимы
троих
из братьев
Маркс,
американских
звезд немой
комедии.
My secret
number
— мое
загаданное
число
Chico
guess
—
догадка
Чико (Харпо,
Граучо)
2. Типы данных и переменные
47
var stringNumber = "5";
var actualNumber = 5;
stringNumber === actualNumber;
false
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;
???
Допишите этот код, чтобы он определял, можно ли 11-летнему посетителю
посмотреть фильм (возраст задается в переменной
age, а переменная
accompanied равна true, если посетитель пришел со взрослым).
Попробуйте поменять эти значения (например, пусть в
age будет число 12,
а в
accompanied — true) и убедитесь, что код по-прежнему находит
верное решение.
String number
—
здесь
«строка-число»
Actual number
—
число
Accompanied
—
в сопровождении
undefined и null
И наконец, в JavaScript есть два особых значения, они называются
undefi ned и null. Оба они означают «пусто», но смысл этого в обоих
случаях немного различается.
JavaScript использует значение
undefi ned, когда не может найти иного
значения. Например, если, создав новую переменную, вы не присвоите ей
значение с помощью оператора
=, ее значением будет undefi ned:
var myVariable;
myVariable;
undefined
А значение
null обычно используется, чтобы явно обозначить —
«тут пусто».
var myNullVariable = null;
myNullVariable;
null
Пока вы будете нечасто использовать
undefi ned и null. Вы получите
undefi ned, если создадите переменную и не присвоите ей значения, —
JavaScript всегда возвращает
undefi ned, когда значение не определено.
Однако специально
undefi ned обычно ничему не присваивают; если вам
захочется обозначить, что в переменной «пусто», используйте для этого
null.
Иначе говоря,
null нужен, чтобы явно показать отсутствие значе-
ния, и порой это бывает полезно. Например, есть переменная, обозна-
чающая ваш любимый овощ. Если вы терпеть не можете все без исклю-
чения овощи, имеет смысл дать переменной «любимый овощ» значение
null.
Этим вы явно покажете любому, кто увидит ваш код, что у вас нет
любимого овоща. Однако если в переменной будет
undefi ned, кто-
нибудь может подумать, что вы просто еще не приписали ей значения.
Что мы узнали
Теперь вы знаете все базовые типы данных JavaScript — это числа, строки
и булевы значения, — а также специальные значения
null и undefi ned.
Числа нужны для всего, что связано с математикой, строки — для работы
с текстом, а булевы значения — для разрешения вопросов, на которые
можно ответить «да» или «нет». Значения же
null и undefi ned дают нам
способ обозначать то, чего не существует.
В следующих двух главах мы поговорим о массивах и объектах —
и то и другое представляет собой способ объединения простых типов
данных в более сложные наборы значений.
My variable
—
моя переменная
My null variable
—
моя пустая
переменная
49
3
Достарыңызбен бөлісу: |