Логические Операции
Логические операции обычно используются с Boolean (логическими) значениями; если они имеются, они возвращают Boolean/Булево значение. Однако операции && и в действительности возвращают значение одного из специфицированных операндов, поэтому, если эти операции используются с не-Boolean значениями, они могут вернуть не-Boolean значение.
Реализованы в | JavaScript 1.0 | ||
Версия ECMA | ECMA-262 |
Логические операции описаны в следующей таблице.
Операция
Использование
Описание
&&
(Логическое И) Возвращает expr1, если может быть конвертировано в false; иначе, возвращает expr2. Таким образом, при использовании с Boolean-значениями && возвращает true, если оба операнда true; иначе возвращает false.
!
(Логическое НЕ) Возвращает false, если его единственный операнд может быть конвертирован в true; иначе возвращает true.
Примерами выражений, которые могут быть конвертированы в false, являются выражения, дающие при их вычислении null, 0, пустую строку ("") или undefined.
Хотя операции&& и можно использовать с не-Boolean-значениями, их можно продолжать рассматривать как Boolean-операции, поскольку их return-значения всегда могут быть конвертированы в Boolean-значения.
Сокращённый Цикл Вычисления.
Поскольку логические выражения вычисляются слева направо, они тестируются на возможность "укороченного/short-circuit" вычисления по следующим правилам:
- false && что-либо сокращённо вычисляется в false.
- true что-либо сокращённо вычисляется в true.
Логические правила гарантируют, что эти вычисления всегда корректны. Обратите внимание, что часть что-либо не вычисляется, поэтому выполнение этого что-либо в качестве побочного эффекта никакого эффекта иметь не будет.
Обратная Совместимость
JavaScript 1.0 и 1.1.
Операции && и ведут себя так:
Операция
Поведение
Если первый операнд (expr1) может быть конвертирован в false, операция && возвращает false вместо значения expr1.
Если первый операнд (expr1) может быть конвертирован в true, операция возвращает true вместо значения expr1.
Примеры
Вот примеры применения операции && (логическое И):
a1=true && true // t && t возвращает true
a2=true && false // t && f
возвращает false
a3=false && true // f && t
возвращает false
a4=false && (3 == 4) // f && f
возвращает false
a5="Cat" && "Dog" // t && t
возвращает Dog
a6=false && "Cat" // f && t
возвращает false
a7="Cat" && false // t && f
возвращает false
А вот примеры применения операции (логическое ИЛИ):
o1=true true // t t
возвращает true
o2=false true // f t
возвращает true
o3=true false // t f
возвращает true
o4=false (3 == 4) // f f
возвращает false
o5="Cat" "Dog" // t t
возвращает Cat
o6=false "Cat" // f t
возвращает Cat
o7="Cat" false // t f
возвращает Cat
Примеры применения операции ! (логическое НЕ):
n1=!true // !t
возвращает false
n2=!false // !f
возвращает true
n3=!"Cat" // !t
возвращает false