Логические операторы
Описание, примеры
Логические операторы, как правило, используются с булевыми значениями и возвращают булево значение.
Однако, в javascript операторы && и || возвращают не булево значение, а один из операндов, определивший значение выражения. Конечно, результат в таком случае может быть и не булевым.
Логические операторы описаны следующей таблицей:
Оператор | Использование | Описание |
---|---|---|
Логическое И (&& ) |
expr1 && expr2 |
Возвращает expr1 , если оно может быть преобразовано к false ; в ином случае возвращает expr2 . Так что, при вызове с булевыми значениями, && вернет true только если оба операнда истинны, иначе false . |
Логическое ИЛИ (|| ) |
expr1 || expr2 |
Возвращает expr1 , если оно может быть преобразовано к true ; в ином случае возвращает expr2 . Так что, при вызове с булевыми значении, || вернет true только в том случае, когда хотя бы один операнд истинен, иначе вернет false . |
Логическое НЕ (! ) |
!expr |
Возаращает false , если операнд может быть преобразован к true , в ином случае возвращает true . |
К false
преобразуются, например: null
, 0
, пустая строка ("")
и undefined.
Хотя операторы && и || и могут быть использованы для возвращения небулевых значений, они все же логические, так как возвращаемые значения могут быть приведены к булевому типу.
Оператор ! также используется для быстрого преобразования выражения к булевому значению:
!! "string" = true |
!! null = false |
Сокращенные вычисления
Так как логические выражения вычисляются слева направо, они проверяются на возможность "сокращенных вычислений" по следующим правилам:
false && что угодно
становитсяfalse
.true || что угодно
становитсяtrue
.
Эти правила логики гарантируют, что результат всегда правильный, но лишних вычислений при этом не проводится. Как следствие, невычисленные выражения не дадут побочных эффектов:
1 | a =1 |
2 | check = 5 || (a=3) |
3 |
4 | alert(a) // 1 |