Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Обработчики событий в JavaScript.doc
Скачиваний:
2
Добавлен:
16.11.2019
Размер:
251.9 Кб
Скачать

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

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

Реализованы в

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 вышеприведённых выражений не вычисляется, поэтому она не оказывает никакого действия на результат.

Обратная Совместимость

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