Логические операторы



Логические операторы:

  • && - И
  • || - ИЛИ
  • - НЕ

Принимают значение любого типа и возвращают значение любого типа

|| - ИЛИ - истинно, если хотя бы одно из двух значений истинно (не 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" - строка с нулём
  • " " - строка с пробелом
  • [] - пустой массив
  • {} - пустой объект