Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

if (а == 4)

b = b + 1;

else

а = а + 1:

Здесь выполняется проверка равенства значения переменной а числу 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 (или когда вебброузер загружает новую страницу), создается новый глобальный объект, в котором инициализируется начальный набор свойств, определяющих:

Поделиться:
Популярные книги

Дракон - не подарок

Суббота Светлана
2. Королевская академия Драко
Фантастика:
фэнтези
6.74
рейтинг книги
Дракон - не подарок

Бастард Императора. Том 8

Орлов Андрей Юрьевич
8. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 8

Чужая дочь

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Чужая дочь

Эра Мангуста. Том 2

Третьяков Андрей
2. Рос: Мангуст
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эра Мангуста. Том 2

Идеальный мир для Лекаря 14

Сапфир Олег
14. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 14

Один на миллион. Трилогия

Земляной Андрей Борисович
Один на миллион
Фантастика:
боевая фантастика
8.95
рейтинг книги
Один на миллион. Трилогия

Помещицы из будущего

Порохня Анна
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Помещицы из будущего

Шлейф сандала

Лерн Анна
Фантастика:
фэнтези
6.00
рейтинг книги
Шлейф сандала

Черный маг императора 2

Герда Александр
2. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
6.00
рейтинг книги
Черный маг императора 2

Император

Рави Ивар
7. Прометей
Фантастика:
фэнтези
7.11
рейтинг книги
Император

Бандит 2

Щепетнов Евгений Владимирович
2. Петр Синельников
Фантастика:
боевая фантастика
5.73
рейтинг книги
Бандит 2

На границе империй. Том 9. Часть 2

INDIGO
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 2

Князь Серединного мира

Земляной Андрей Борисович
4. Страж
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Князь Серединного мира

Чайлдфри

Тоцка Тала
Любовные романы:
современные любовные романы
6.51
рейтинг книги
Чайлдфри