This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Логическое ИЛИ (||)
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since июль 2015 г..
Логический оператор ИЛИ (||) (дизъюнкция) для набора операндов истинен будетtrue только в случае, если один или несколько его операндов имеют значениеtrue.
Обычно используется сбулевыми (логическими) значениями. Тогда возвращается булевое значение. Однако фактически оператор|| возвращает значение одного из операндов, поэтому если этот оператор используется с небулевыми значениями, он вернет небулевое значение.
In this article
Интерактивный пример
const a = 3;const b = -2;console.log(a > 0 || b > 0);// Expected output: trueСинтаксис
expr1 || expr2;Описание
Еслиexpr1 может быть преобразовано вtrue, то вернётсяexpr1; в противном случае возвращаетсяexpr2.
Если значение может быть преобразовано вtrue, то оно рассматривается какистиноподобное (truthy). Если же значение может быть преобразовано вfalse, то оно называетсяложноподобным (falsy).
Примеры выражений, которые могут быть преобразованы вfalse:
null;NaN;0;- пустая строка (
"",'',``); undefined.
Несмотря на то, что оператор|| может использоваться с операндами без логических значений, это всё равно булевый оператор, поскольку его возвращаемое значение всегда можно преобразовать вбулевый примитив.Чтобы явно преобразовать возвращаемое значение этого оператора (или вообще любое выражение) в соответствующее значение булевого типа, используйте двойнойоператор НЕ или конструкторBoolean.
Сокращённое вычисление
Оператор логического ИЛИ вычисляется слева направо, делая возможным сокращённое вычисление выражения, согласно следующему правилу:
(истинноподобное выражение) || следующее выражение — вычисление останавливается на истинноподобном выражении;
Сокращенное вычисление хорошо тем, чтоследующее выражение не будетвычислено, т.е. всё, связанное с ним, будет проигнорировано (например, еслиследующее выражение представляет собой вызов функции, то он никогда не произойдёт). Всё потому, что значение оператора известно уже после вычисления первого операнда. Посмотрите на пример:
function A() { console.log("вызвана функция A"); return false;}function B() { console.log("вызвана функция B"); return true;}console.log(B() || A());// В результате вызова функции B, в консоли будет выведено "вызвана функция B",// а далее в консоли появится false (это результат оператора)Приоритет операторов
Следующие выражения могут показаться эквивалентными, но это не так, потому что оператор&& выполняется до оператора|| (см.приоритет операторов).
true || (false && false); // вернёт true, поскольку сначала вычисляется &&(true || false) && false; // вернёт false, поскольку у группировки выше приоритетПримеры
>Использование оператора ИЛИ
В следующем коде показаны примеры использования оператора|| (логическое ИЛИ).
o1 = true || true; // t || t вернёт trueo2 = false || true; // f || t вернёт trueo3 = true || false; // t || f вернёт trueo4 = false || 3 == 4; // f || f вернёт falseo5 = "Cat" || "Dog"; // t || t вернёт "Cat"o6 = false || "Cat"; // f || t вернёт "Cat"o7 = "Cat" || false; // t || f вернёт "Cat"o8 = "" || false; // f || f вернёт falseo9 = false || ""; // f || f вернёт ""o10 = false || varObject; // f || object вернёт varObjectПримечание:Если вы используете этот оператор, чтобы задать значение по умолчанию для некоторой переменной, имейте в виду, что любоеложноподобное будет проигнорировано. Если вам нужно исключить толькоnull илиundefined, попробуйте воспользоватьсяоператором нулевого слияния.
Правила конвертации для булевых значений
Конвертация И в ИЛИ
Следующая операция сбулевыми значениями:
bCondition1 && bCondition2;всегда эквивалентна:
!(!bCondition1 || !bCondition2);Конвертация ИЛИ в И
Следующая операция сбулевыми значениями:
bCondition1 || bCondition2;всегда эквивалентна:
!(!bCondition1 && !bCondition2);Удаление вложенных круглых скобок
Поскольку логические выражения вычисляются слева направо, всегда можно удалить круглые скобки из сложного выражения при условии соблюдения определенных правил.
Следующая составная операция сбулевыми значениями:
bCondition1 && (bCondition2 || bCondition3);всегда эквивалентна:
!(!bCondition1 || (!bCondition2 && !bCondition3));Спецификации
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # prod-LogicalORExpression> |