Здесь выполняется проверка равенства значения переменной а числу 4. Если равно, к значению переменной b добавляется 1; в противном случае число 1 добавляется к значению переменной а.
Как будет говориться в разделе 3.8, любое значение в языке JavaScript может быть преобразовано в логическое значение. Следующие значения в результате такого преобразования дают логическое значение (и затем работают как)
false
:
undefined
null
0
– 0
NaN
//
пустая строка
Все остальные значения, включая все объекты (и массивы), при преобразовании дают в результате значение (и работают как)
true
. Значение
false
и шесть значений, которые при преобразовании приводятся к этому значению, иногда называют ложными, а все остальные - истинными. В любом контексте, когда интерпретатор JavaScript ожидает получить логическое значение, ложные значения интерпретируются как
false
, а истинные значения - как
true
.
В качестве примера предположим, что переменная
о
может хранить объект или значение
null
. В этом случае можно явно проверить значение переменной о на неравенство значению null, как показано ниже:
if (о !== null) ...
Оператор «не равно»
!==
сравнит переменную о со значением
null
и вернет в результате
true
или
false
. Однако вы можете опустить оператор сравнения и положиться на тот факт, что
null
является ложным значением, а объект - истинным:
if (о) ...
В первом случае тело инструкции
if
будет выполнено, только если значение переменной о не равно
null
. Во втором - ставится менее жесткое условие: тело инструкции
if
будет выполнено, только если о не содержит
false
или другое ложное значение (такое как
null
или
undefined
). Какая инструкция
if
больше подходит для вашей программы, зависит от того, какие значения могут присваиваться переменной
о
. Если в программе необходимо отличать значение
null
от
0
и
""
, то следует использовать явную операцию сравнения.
Логические значения имеют метод
toString
, который можно использовать для преобразования этих значений в строки «true» или «false», но они не имеют других полезных методов. Несмотря на простоту прикладного интерфейса, в языке имеется три важных логических оператора.
Оператор
&&
выполняет логическую операцию И. Он возвращает истинное значение, только если оба операнда истинны - в противном случае он возвращает ложное значение. Оператор
||
выполняет логическую операцию ИЛИ: он возвращает истинное значение, если хотя бы один (или оба) из операндов является истинным, и ложное значение - если оба операнда являются ложными. Наконец, унарный оператор
!
выполняет логическую операцию НЕ: он возвращает значение
true
для ложного операнда и
false
– для истинного. Например:
if ((х == 0 && у == 0) И !(z == 0)) {
// х и у содержат значение 0 или z не равна нулю
}
Полное
описание этих операторов приводится в разделе 4.10.
3.4. Значения null и undefined
Ключевое слово
null
в языке JavaScript имеет специальное назначение и обычно используется для обозначения отсутствия значения. Оператор
typeof
для значения
null
возвращает строку «object», что говорит о том, что значение
null
является специальным «пустым» объектом. Однако на практике значение
null
обычно считается единственным членом собственного типа и может использоваться как признак отсутствия значения, такого как число, строка или объект. В большинстве других языков программирования имеются значения, аналогичные значению
null
в JavaScript: вам они могут быть известны как
null
или
nil
.
В языке JavaScript имеется еще одно значение, свидетельствующее об отсутствии значения. Значение
undefined
, указывающее на полное отсутствие какого-либо значения. Оно возвращается при обращении к переменной, которой никогда не присваивалось значение, а также к несуществующему свойству объекта или элементу массива. Кроме того, значение
undefined
возвращается функциями, не имеющими возвращаемого значения, и присваивается параметрам функций для аргументов, которые не были переданы при вызове. Идентификатор
undefined
является именем предопределенной глобальной переменной (а не ключевым словом, как
null
), которая инициализирована значением
undefined
. В ECMAScript 3
undefined
является переменной, доступной для чтения/записи, которой можно присвоить любое другое значение. Эта проблема была исправлена в ECMAScript 5, и в реализациях JavaScript, соответствующих этому стандарту, переменная
undefined
доступна только для чтения. Оператор
typeof
для значения
undefined
возвращает строку «undefined», показывающую, что данное значение является единственным членом специального типа.
Несмотря на эти отличия, оба значения,
null
и
undefined
, являются признаком отсутствия значения и часто являются взаимозаменяемыми. Оператор равенства
==
считает их равными. (Чтобы отличать их в программе, можно использовать оператор идентичности
===
.) Оба они являются ложными значениями - в логическом контексте они интерпретируются как значение
false
. Ни
null
, ни
undefined
не имеют каких-либо свойств или методов. На практике попытка использовать
.
или
[]
, чтобы обратиться к свойству или методу этих значений, вызывает ошибку ТуреЕrror.
Значение
undefined
можно рассматривать как признак неожиданного или ошибочного отсутствия какого-либо значения, a
null
– как признак обычного или вполне ожидаемого отсутствия значения. Если в программе потребуется присвоить одно из этих значений переменной или свойству или передать одно из этих значений функции, практически всегда предпочтительнее использовать значение
null
.
3.5. Глобальный объект
В разделах выше описывались простые типы данных и значения языка JavaScript. Объектные типы - объекты, массивы и функции - описываются в отдельных главах, далее в книге. Но существует один важный объект, с которым необходимо познакомиться сейчас. Глобальный объект - это обычный объект JavaScript, который играет очень важную роль: свойства этого объекта являются глобальными идентификаторами, доступными из любого места в программах на JavaScript. Когда выполняется запуск интерпретатора JavaScript (или когда вебброузер загружает новую страницу), создается новый глобальный объект, в котором инициализируется начальный набор свойств, определяющих: