Ядро JavaScript 1.5. Справочник

Логические Операции


Логические операции обычно используются с Boolean (логическими) значениями; если они имеются, они возвращают Boolean/Булево значение. Однако операции && и в действительности возвращают значение одного из специфицированных операндов, поэтому, если эти операции используются с не-Boolean значениями, они могут вернуть не-Boolean значение.

Реализованы в JavaScript 1.0
Версия ECMA ECMA-262

Логические операции описаны в следующей таблице.

Таблица 5.5    Логические Операции

Операция

Использование

Описание

&&expr1 && expr2

(Логическое И) Возвращает expr1, если может быть конвертировано в false; иначе, возвращает expr2. Таким образом, при использовании с Boolean-значениями && возвращает true, если оба операнда true; иначе возвращает false.

expr1 expr2

(Логическое ИЛИ) Возвращает expr1, если может быть конвертировано в true; иначе, возвращает expr2. Таким образом, при использовании с Boolean-значениями возвращает true, если любой из операндов true; если оба false, возвращает false.

!!expr

(Логическое НЕ) Возвращает 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


     



    Содержание раздела