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