Logical OR (||)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

논리적 OR (||) (논리적 분리) 연산자는 피연산자 중 하나 이상이 참인 경우에만 참입니다. 일반적으로 불리언(논리적) 값과 함께 사용되며, 이 경우에는 불리언 값을 반환합니다. 그러나 || 연산자는 실제로 지정된 피연산자 중 하나의 값을 반환하므로, 이 연산자를 불리언이 아닌 값과 함께 사용하면 불리언이 아닌 값이 반환됩니다.

시도해보기

const a = 3;
const b = -2;

console.log(a > 0 || b > 0);
// Expected output: true

문법

js
x || y

구문

만약 xtrue로 반환할 수 있으면 x를 반환하고, 그렇지 않으면 y를 반환합니다.

값을 true로 변환할 수 있는 경우, 해당 값은 소위 truthy하다고 할 수 있습니다. 값을 false로 변환할 수 있으면, 해당 값을 falsy하다고 할 수 있습니다.

false로 변환할 수 있는 표현식의 예는 다음과 같습니다.

  • null;
  • NaN;
  • 0;
  • 빈 문자열 ("" 또는 '' 또는 ``);
  • undefined.

|| 연산자는 불리언 값이 아닌 피연산자와 함께 사용할 수 있지만, 반환 값은 항상 불리언 원시 값으로 변환할 수 있으므로 불리언 연산자로 간주할 수 있습니다. 반환 값(또는 일반적으로 모든 표현식)을 해당 불리언 값으로 명시적으로 변환하려면 이중 [NOT operator] 또는 Boolean 생성자를 사용합니다.

단락 평가

논리적 OR 표현식은 왼쪽에서 오른쪽으로 평가되며, 다음 규칙을 사용하여 "단락" 평가가 가능한지 테스트합니다.

(some truthy expression) || expr은 참 같은 값(truthy) 표현식으로 단락 평가됩니다.

단락은 위의 expr 부분이 평가되지 않으므로 이로 인한 부작용이 발생하지 않음을 의미합니다. (예: expr이 함수 호출인 경우 호출이 수행되지 않음) 이는 첫 번째 피연산자를 평가한 후에 피연산자 값이 이미 결정되었기 때문에 발생합니다. 아래 예제를 참조하세요.

js
function A() {
  console.log("called A");
  return false;
}
function B() {
  console.log("called B");
  return true;
}

console.log(B() || A());
// 함수 호출로 인해 "called B"를 콘솔에 출력합니다.
// 그런 다음 true(연산자의 결과 값)를 기록합니다.

연산자 우선순위

다음 표현식은 동일해 보일 수 있지만, && 연산자가 || 연산자보다 먼저 실행되기 때문에 동일하지 않습니다. (연산자 우선순위를 참조).

js
true || false && false; // &&이 먼저 실행되어 true를 반환합니다.
(true || false) && false; // 그룹화가 가장 우선순위가 높으므로, false를 반환합니다.

예제

OR 사용하기

다음 코드는 || (논리적 OR) 연산자의 예를 보여줍니다.

js
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

참고 : 이 연산자를 사용하여 일부 변수에 기본값을 제공하는 경우, 거짓 같은 값(falsy)은 사용되지 않으므로 주의해야 합니다. null 또는 undefined만 필터링해야 하는 경우, 널 병합 연산자를 사용하는 것이 좋습니다.

불리언에 대한 변환 규칙

AND를 OR로 변환하기

불리언을 포함하는 아래 연산은

js
bCondition1 && bCondition2

항상 아래와 같습니다.

js
!(!bCondition1 || !bCondition2)

OR을 AND로 변환하기

불리언을 포함하는 아래의 연산은

js
bCondition1 || bCondition2

항상 아래와 같습니다.

js
!(!bCondition1 && !bCondition2)

중첩된 괄호 제거

논리적 표현식은 왼쪽에서 오른쪽으로 평가되기 때문에 특정 규칙을 따르는 경우 복잡한 식에서 괄호를 제거할 수 있습니다.

불리언을 포함하는 다음 복합적인 연산은

js
bCondition1 && (bCondition2 || bCondition3)

언제나 다음과 같습니다.

js
!(!bCondition1 || !bCondition2 && !bCondition3)

명세서

Specification
ECMAScript® 2025 Language Specification
# prod-LogicalORExpression

브라우저 호환성

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Logical OR (||)

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

같이 보기