Логические операции обычно выполняются над Булевыми (логическими) значениями; при этом возвращается Булево значение. Однако операции && и || в действительности возвращают значение одного из специфицированных операндов, поэтому, если эти операции используются с не-Булевыми значениями, они могут возвратить не-Булево значение.
Реализованы в
JavaScript 1.0
Версия ECMA
ECMA-262
Логические операции описаны в следующей таблице.
Таблица 5.5 Логические Операции
Операция
Использование
Описание
&&
expr1 && expr2
(Логическое AND/И) Возвращает expr1, если может быть конвертировано в false; иначе возвращает expr2. Таким образом, при использовании с Булевыми значениями, && возвращает true, если оба операнда true; иначе возвращает false.
||
expr1 || expr2
(Логическое OR/ИЛИ) Возвращает expr1, если может быть конвертировано в false; иначе возвращает expr2. Таким образом, при использовании с Булевыми значениями, || возвращает true, если хотя бы один из операндов true; если оба false, возвращает false.
!
!expr
(Логическое NOT/НЕ) Возвращает false, если единственный операнд может быть конвертирован в true; иначе возвращает true.
Примерами выражений, которые могут быть конвертированы в false, являются те, которые вычисляются в null, 0, пустую строку ("") или undefined.
Хотя операции && и || могут использоваться с не-Булевыми операндами, они (операции) считаются всё же Булевыми, поскольку их return-значения всегда могут быть конвертированы в Boolean.
Сокращённый цикл вычислений.Поскольку логические выражения вычисляются слева направо, они проверяются на возможность "сокращённого/short-circuit" вычисления по следующим правилам:
false && anything сокращённо вычисляется в false.
true || anything сокращённо вычисляется в true.
Правила логики гарантируют, что эти вычисления всегда будут корректны. Обратите внимание, что часть anything вышеприведённых выражений не вычисляется, поэтому она не оказывает никакого действия на результат.