Spec-Zone.ru › JavaScript

Логическое ИЛИ (||)

Базовый уровень Широко доступен

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 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)

Спецификации

Спецификация
Спецификация языка ECMAScript® 2027
# prod-LogicalORExpression

Совместимость с браузерами

Настольные компьютеры Мобильные Сервер
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

См. также

  • Оператор нулевого слияния (??)
  • Boolean
  • Truthy
  • Falsy

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API