В этом руководстве вы узнаете, как использовать 3 логических оператора JavaScript: оператор NOT( !
), логический оператор AND( &&
) и OR( ||
).
Логические операторы важны в JavaScript, потому что они позволяют сравнивать переменные и делать что-то на основе результата этого сравнения.
Например, если результат сравнения true
, вы выполняете блок кода; если false
, вы выполняете еще один блок кода.
JavaScript предоставляет три логических оператора:
- !(логическое НЕ)
- ||(логическое ИЛИ)
- &&(логическое И)
1) Логический оператор NOT(!)
В JavaScript используется восклицательный знак !
для представления оператора НЕ. !
Оператор может применяться к одному значению любого типа, а не только к логическому значению.
Когда вы применяете !
оператор к значению, !
возвращает true
, если значение false
, и возвращает false
, если значение true
. Например:
let eligible = false, required = true; console.log(!eligible); console.log(!required);
Выход:
true false
В этом примере eligible
значение равно true
, поэтому !eligible
возвращает false
. И поскольку required
равно false
, !required
возвращает false
.
Когда вы применяете !
оператор к нелогическому значению, !
оператор сначала преобразует значение в логическое значение, а затем инвертирует его.
В следующем примере показано, как использовать !
оператор:
!a
!
оператор работает по следующим правилам:
- Если
a
неundefined
, результатом будетtrue
. - Если
a
равноnull
, результат будетtrue
. - Если
a
является числом, отличным от0
, результат будетfalse
. - Если
a
равноNaN
, результат будетtrue
. - Если
a
равноnull
, результат будетtrue
. - Если
a
является объектом, результат будетfalse
. - Если
a
— пустая строка, результатом будетtrue
. Еслиa
— непустая строка, результат будетfalse
.
Ниже показаны результаты !
оператора, когда мы применяем его к небулевому значению:
console.log(!undefined); // true console.log(!null); // true console.log(!20); //false console.log(!0); //true console.log(!NaN); //true console.log(!{}); // false console.log(!''); //true console.log(!'OK'); //false console.log(!false); //true console.log(!true); //false
Двойное отрицание( !!
)
Иногда в коде можно увидеть двойное отрицание( !!
). !!
дважды использует логический оператор НЕ( !
), чтобы преобразовать значение в его реальное логическое значение. Результат такой же, как и при использовании функции Boolean(). Например:
let counter = 10; console.log(!!counter); // true
Первый !
оператор возвращает значение переменной- counter
. И второй !
отрицает этот результат и возвращает реальное значение переменной- counter
.
2) Оператор AND( &&
)
JavaScript использует двойной амперсанд( &&
) для представления оператора И.
В следующем выражении используется оператор &&
:
let result = a && b;
Если a
можно преобразовать в true
, оператор &&
возвращает b
; в противном случае он возвращает a
. На самом деле это правило применяется к логическим значениям.
Следующая таблица истинности иллюстрирует результат применения оператора &&
к двум логическим значениям:
a | b | a && b |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
Результат оператора &&
истинен, только если оба значения true
, в противном случае он false
. Например:
let eligible = false, required = true; console.log(eligible && required); // false
В этом примере eligible
является false
, поэтому значение выражения eligible && required
равно false
.
См. следующий пример:
let eligible = true, required = true; console.log(eligible && required); // true
В этом примере оба параметра, eligible
и required
, равны true
, поэтому значение выражения eligible && required
равно false
.
По короткой схеме
Оператор &&
вычисляет по короткой схеме. Это означает, что оператор &&
оценивает второе значение только в том случае, если первого недостаточно для определения значения выражения. Например:
let b = true; let result = b &&(1 / 0); console.log(result);
Выход:
Infinity
В этом примере b
true
, поэтому оператор &&
не может определить результат без дополнительной оценки второго выражения( 1/0
).
Результатом является Infinity
, которая является результатом выражения( 1/0
). Однако:
let b = false; let result = b &&(1 / 0); console.log(result);
Выход:
false
В этом случае b
равно false
, оператору &&
не нужно оценивать второе выражение, поскольку он может определить окончательный результат как false
значение первого значения.
Цепочка операторов &&
В следующем выражении используется несколько операторов &&
:
let result = value1 && value2 && value3;
Оператор &&
несет в себе следующее:
- Вычисляет значения слева направо.
- Каждое значение преобразует в логическое. Если результат
false
, останавливается и возвращает исходное значение. - Если все значения являются истинными, возвращает последнее значение.
Другими словами, оператор &&
возвращает первое ложное значение или последнее значение, если ничего не найдено.
Если значение может быть преобразовано в true
, это так называемое истинное значение. Если значение может быть преобразовано в false
, это так называемое ложное значение.
3) Логический оператор OR( ||
)
JavaScript использует двойную вертикальную ||
для представления оператора ИЛИ. Вы можете применить ||
оператор к двум значениям любого типа:
let result = a || b;
Если a
можно преобразовать в true
, возвращает a
; иначе возвращает b
. Это правило также применяется к логическим значениям.
Следующая таблица истинности иллюстрирует результат ||
оператор на основе значения операндов:
а | b | а || b |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
||
оператор возвращает false
, если оба значения оцениваются как false
. В случае, если значение равно , ||
оператор возвращает true
. Например:
let eligible = true, required = false; console.log(eligible || required); // true
Следующее выражение применяет ||
оператор к двум нелогическим значениям:
В этом примере подходящие || required возвращает true, потому что одно из значений( required
) истинно. См. другой пример:
let eligible = false, required = false; console.log(eligible || required); // false
В этом примере eligible || required
возвращает false
, поскольку оба значения равны false
.
||
оператор также short-circuit
Подобно оператору &&
, ||
также оператор короткой схемы. Это означает, что если первое значение оценивается как true
, оператор ||
не оценивает второе.
Цепочка ||
операторов
В следующем примере показано, как использовать несколько || операторов в выражении:
let result = value1 || value2 || value3;
||
оператор делает следующее:
- Вычисляет значения слева направо.
- Каждое значение преобразует в логическое. Если результат преобразования
true
, останавливается и возвращает значение. - Если все значения были оценены как
false
, возвращает последнее значение.
Другими словами, цепочка ||
операторов возвращает первое истинное значение или последнее, если истинное значение не найдено.
Приоритет
Когда вы используете смешанные логические операторы в выражении, механизм JavaScript оценивает операторы на основе указанного порядка, и этот порядок называется приоритетом оператора. Другими словами, приоритет оператора — это порядок выполнения операторов.
Приоритет логического оператора находится в следующем порядке от высшего к низшему:
- NOT(!)
- AND(&&)
- OR(||)
Заключение
- Оператор NOT(
!
) инвертирует логическое значение.(!!
), преобразует значение в его реальное логическое значение. - Оператор AND(
&&
) применяется к двум логическим значениям и возвращает значение true, если оба значения истинны. - Оператор OR(
||
) применяется к двум логическим значениям и возвращает значениеtrue
, если один из операндов имеет значениеtrue
. - И
&&,
и||
операторы короткой схемы. Их также можно применять к небулевым значениям. - Приоритет логического оператора от высшего к низшему равен
!
,&&
и||
.