Логическое ИЛИ (||)
Базовый уровень Широко доступен
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Оператор логического ИЛИ (||) (логическая дизъюнкция) для набора операндов истинен тогда и только тогда, когда один или несколько его операндов истинны. Обычно он используется с булевыми (логическими) значениями. В этом случае он возвращает булево значение. Однако оператор || фактически возвращает значение одного из указанных операндов, поэтому если этот оператор используется с небулевыми значениями, он вернет небулево значение.
Попробуйте
const a = 3; const b = -2; console.log(a > 0 || b > 0); // Expected output: true
Синтаксис
x || y
Описание
Если x может быть преобразовано в true, возвращает x; в противном случае возвращает y.
Если значение может быть преобразовано в true, это значение называется truthy (истинное). Если значение может быть преобразовано в false, это значение называется falsy (ложное).
Примеры выражений, которые могут быть преобразованы в false:
-
null; -
NaN; -
0; - пустая строка (
""или''или ` `` `); -
undefined.
Хотя оператор || может использоваться с операндами, не являющимися булевыми значениями, он все равно может считаться булевым оператором, поскольку его возвращаемое значение всегда может быть преобразовано в булев примитив. Чтобы явно преобразовать его возвращаемое значение (или любое выражение в целом) в соответствующее булево значение, используйте двойной оператор НЕ или конструктор Boolean().
Короткое замыкание (Short-circuit evaluation)
Выражение логического ИЛИ вычисляется слева направо, оно проверяется на возможность "короткого замыкания" согласно следующему правилу:
(some truthy expression) || expr вычисляется с коротким замыканием до выражения, которое дает истинное значение.
Короткое замыкание означает, что часть expr выше не вычисляется, следовательно, любые побочные эффекты от этого не вступают в силу (например, если expr является вызовом функции, вызов никогда не происходит). Это происходит потому, что значение оператора уже определено после вычисления первого операнда. См. пример:
function A() {
console.log("called A");
return false;
}
function B() {
console.log("called B");
return true;
}
console.log(B() || A());
// Logs "called B" due to the function call,
// then logs true (which is the resulting value of the operator)
Приоритет операторов
Следующие выражения могут показаться эквивалентными, но это не так, потому что оператор && выполняется до оператора || (см. приоритет операторов).
true || false && false; // returns true, because && is executed first (true || false) && false; // returns false, because grouping has the highest precedence
Примеры
Использование ИЛИ
Следующий код демонстрирует примеры оператора || (логическое ИЛИ).
true || true; // t || t returns true false || true; // f || t returns true true || false; // t || f returns true false || 3 === 4; // f || f returns false "Cat" || "Dog"; // t || t returns "Cat" false || "Cat"; // f || t returns "Cat" "Cat" || false; // t || f returns "Cat" "" || false; // f || f returns false false || ""; // f || f returns "" false || varObject; // f || object returns varObject
Примечание: Если вы используете этот оператор для предоставления значения по умолчанию некоторой переменной, имейте в виду, что любое ложное значение не будет использовано. Если вам нужно только отфильтровать null или undefined, рассмотрите возможность использования оператора нулевого слияния.
Правила преобразования для булевых значений
Преобразование И в ИЛИ
Следующая операция с участием булевых значений:
bCondition1 && bCondition2
всегда эквивалентна:
!(!bCondition1 || !bCondition2)
Преобразование ИЛИ в И
Следующая операция с участием булевых значений:
bCondition1 || bCondition2
всегда эквивалентна:
!(!bCondition1 && !bCondition2)
Удаление вложенных скобок
Поскольку логические выражения вычисляются слева направо, всегда возможно удалить скобки из сложного выражения, следуя некоторым правилам.
Следующая составная операция с участием булевых значений:
bCondition1 && (bCondition2 || bCondition3)
всегда эквивалентна:
!(!bCondition1 || !bCondition2 && !bCondition3)
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
logical_or |
1 |
12 |
1 |
3 |
1 |
18 |
4 |
10.1 |
1 |
1.0 |
4.4 |
1 |
1.0.0 |
1.0 |
0.10.0 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OR