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