Логический тип Boolean в JavaScript представляет одно из двух значений: true (истина) или false (ложь).
Значения Boolean
В программировании очень часто бывают ситуации, когда требуется тип данных, который может принимать одно значение из двух, вроде
- ДА / НЕТ
- ВКЛ / ВЫКЛ
- ИСТИНА / ЛОЖЬ
Именно для этих случаев в JavaScript существует логический тип данных Boolean, который может принимать только значение true (истина) или false (ложь).
Функция Boolean()
Чтобы определить, является ли выражение (или переменная) истиной (возвращает значение true), можно воспользоваться функцией Boolean():
Boolean(10 > 9) // возвращает true
Или можно сделать еще проще:
(10 > 9) // также возвращает true
10 > 9 // также возвращает true
Все имеет "значение" True или False
Любое значение отличное от 0 имеет логическое значение true.
// следующие выражения возвращают true
Boolean(100)
Boolean( 3.14)
Boolean(-15)
Boolean("Hello")
Boolean("false")
Boolean(7 + 1 + 3.14)
Логическое значение 0 (ноль) — false.
var x = 0;
Boolean(x); // возвращает false
Логическое значение -0 (минус ноль) — false.
var x = -0;
Boolean(x); // возвращает false
Логическое значение "" (пустая строка) — false.
var x = "";
Boolean(x); // возвращает false
Логическое значение undefined — false.
var x;
Boolean(x); // возвращает false
Логическое значение null — false.
var x = null;
Boolean(x); // возвращает false
Логическое значение false — false.
var x = false;
Boolean(x); // возвращает false
Логическое значение NaN — false.
var x = 10 / "H";
Boolean(x); // возвращает false
Значения типа Boolean могут быть объектами
Обычно, логические значения типа Boolean определяются примитивными литералами:
var x = false;
Однако, в JavaScript при помощи ключевого слова new логические значения также можно определить и как объекты:
var y = new Boolean(false);
Пример:
var x = false;
var y = new Boolean(false);
// typeof x вернет тип boolean
// typeof y вернет тип object
Тем не менее, не определяйте значения типа Boolean как объекты. Это замедляет скорость выполнения скрипта. Кроме этого, ключевое слово new в данном случае усложняет код и может привести к неожиданным результатам:
При использовании оператора сравнения ==, одинаковые значения типа Boolean равны:
var x = false;
var y = new Boolean(false);
// (x == y) будет истинным (true), потому что x и y имеют равные значения
Однако, при использовании оператора сравнения ===, одинаковые значения типа Boolean не будут равными, потому что оператор === ожидает совпадения как по значению, так и по типу.
var x = false;
var y = new Boolean(false);
// (x === y) будет ложным (false), потому что x и y не равны по типу (boolean и object)
Или еще хуже. Объекты не сравниваются:
var x = new Boolean(false);
var y = new Boolean(false);
// (x == y) - false, потому что x и y разные объекты
Обратите внимание на разницу между (x==y) и (x===y).
Сравнение двух объектов JavaScript всегда возвращает ложь (false).
Логические операторы и операторы сравнения
Логические операторы и операторы сравнения используются для проверки выражений и переменных на соответствие какому-либо условию.
Значения типа Boolean лежат в основе всех сравнений и условий в JavaScript.
Операторы сравнения
Операторы сравнения используются в логических выражениях для определения совпадения или различия между переменными или значениями.
Предположим, что у нас есть x = 5. Следующая таблица объясняет операторы сравнения:
Оператор | Описание | Выражение | Возвращает |
---|---|---|---|
== | равно | x == 8 x == 5 x == "5" | false true true |
=== | равно по значению и типу | x === 5 x === "5" | true false |
!= | не равно | x != 8 | true |
!== | не равно ни по значению, ни по типу | x !== 8 x !== 5 x !== "5" | true false true |
> | больше чем | x > 8 | false |
< | меньше чем | x < 8 | true |
>= | больше или равно | x >= 8 | false |
<= | меньше или равно | x <= 8 | true |
Как это можно использовать
Операторы сравнения используются в выражениях условий для сравнения значений и принятия решения в зависимости от полученного результата:
if (age < 18) text = "Слишком молод";
Подробнее об условных выражениях будет рассказано в следующей главе этого учебника.
Логические операторы
Логические операторы используются для определения логической связи между переменными или значениями.
Предположим, у нас есть x = 6 и y = 3. Следующая таблица объясняет логические операторы:
Оператор | Описание | Пример |
---|---|---|
&& | И | (x < 10 && y > 1) - true |
|| | ИЛИ | (x == 5 || y == 5) - false |
! | НЕ | !(x == y) - true |
!!"string" = true
!!null = false
Условный (тернарный) оператор
В JavaScript есть особый условный оператор, который присваивает переменной значение в зависимости от заданного условия.
Синтаксис:
имя_переменной= (условие) ?значение1:значение2
Пример:
var voteable = (age < 18) ? "Слишком молод" : "Возраст подходит";
В данном примере если в переменной age значение меньше 18, то переменной voteable будет присвоена строка "Слишком молод", в обратном случае переменной voteable будет присвоена строка "Возраст подходит".
Сравнение разных типов
Сравнение данных разного типа может привести к неожиданным результатам.
При сравнении строки и числа JavaScript будет преобразовывать строку в числовое значение. Пустая строка преобразуется в 0. Не числовая строка преобразуется в значение NaN, которое всегда равно false.
Выражение | Значение |
---|---|
2 < 12 | true |
2 < "12" | true |
2 < "John" | false |
2 > "John" | false |
2 == "John" | false |
"2" < "12" | false |
"2" > "12" | true |
"2" == "12" | false |
При сравнении двух строк значение строки "2" будет больше значения строки "12", потому что в алфавитной последовательности 1 меньше 2.
Чтобы обезопасить результаты сравнения, переменные следует привести к надлежащему типу:
age = Number(age);
if (isNaN(age)) {
voteable = "Введенное значение не является числом";
} else {
voteable = (age < 18) ? "Слишком молод":"Возраст подходит";
}