Логические операторы
Логические операторы:
- && - И
- || - ИЛИ
- ! - НЕ
Принимают значение любого типа и возвращают значение любого типа
|| - ИЛИ - истинно, если хотя бы одно из двух значений истинно (не false)
Короткий цикл вычислений
ИЛИ вычисляется до первого true
Если хотя бы одно из значений true - истина, то ИЛИ истинно, поэтому дальше вычислять не нужно
В поисках правды
ИЛИ возвращает первое true, причём не преобразованное к логическому типу
"мама" || "папа" // "мама"
null || "папа" // "папа"
Если все значения ложные, ИЛИ переберёт их все и возвратит последнее их них:
null || undefined || 0 || "" || NaN // NaN
&& - И - истинно только если все без исключения значения истинны
Короткий цикл вычислений
И вычисляется до первого false
Если хотя бы одно из значений false - ложь, то И тоже false, поэтому дальше вычислять не нужно
И возвращает первое false, если оно есть
Если все значения истинны, И возвращает последнее из них
Приоритет операторов
Логическое НЕ - 16
Логическое И - 6
Логическое ИЛИ - 5
Для сравнения: Плюс - 13, Равно - 10, Умножить - 14
Задача
В какой последовательности выполнятся действия и что вернёт выражение:
5 || 1 && 0 // 5 сначала логическое И вернёт ноль, потом логическое ИЛИ вернёт 5
Логическое НЕ возвращает true или false
Двойное НЕ можно использовать для преобразования к логическому значению
!! 0 // false
!!{} // true
К false преобразуются
- null, undefined
- 0
- "" - пустая строка
- NaN
Всё остальное true, в том числе
- "0" - строка с нулём
- " " - строка с пробелом
- [] - пустой массив
- {} - пустой объект