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 โจ2015๋ 7์โฉ.
๋
ผ๋ฆฌ์ OR (||
) (๋
ผ๋ฆฌ์ ๋ถ๋ฆฌ) ์ฐ์ฐ์๋ ํผ์ฐ์ฐ์ ์ค ํ๋ ์ด์์ด ์ฐธ์ธ ๊ฒฝ์ฐ์๋ง ์ฐธ์
๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ถ๋ฆฌ์ธ(๋
ผ๋ฆฌ์ ) ๊ฐ๊ณผ ํจ๊ป ์ฌ์ฉ๋๋ฉฐ, ์ด ๊ฒฝ์ฐ์๋ ๋ถ๋ฆฌ์ธ ๊ฐ์ ๋ฐํํฉ๋๋ค. ๊ทธ๋ฌ๋ ||
์ฐ์ฐ์๋ ์ค์ ๋ก ์ง์ ๋ ํผ์ฐ์ฐ์ ์ค ํ๋์ ๊ฐ์ ๋ฐํํ๋ฏ๋ก, ์ด ์ฐ์ฐ์๋ฅผ ๋ถ๋ฆฌ์ธ์ด ์๋ ๊ฐ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋ถ๋ฆฌ์ธ์ด ์๋ ๊ฐ์ด ๋ฐํ๋ฉ๋๋ค.
์๋ํด ๋ณด๊ธฐ
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
.
||
์ฐ์ฐ์๋ ๋ถ๋ฆฌ์ธ ๊ฐ์ด ์๋ ํผ์ฐ์ฐ์์ ํจ๊ป ์ฌ์ฉํ ์ ์์ง๋ง, ๋ฐํ ๊ฐ์ ํญ์ ๋ถ๋ฆฌ์ธ ์์ ๊ฐ์ผ๋ก ๋ณํํ ์ ์์ผ๋ฏ๋ก ๋ถ๋ฆฌ์ธ ์ฐ์ฐ์๋ก ๊ฐ์ฃผํ ์ ์์ต๋๋ค. ๋ฐํ ๊ฐ(๋๋ ์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ ํํ์)์ ํด๋น ๋ถ๋ฆฌ์ธ ๊ฐ์ผ๋ก ๋ช
์์ ์ผ๋ก ๋ณํํ๋ ค๋ฉด ์ด์ค [NOT operator] ๋๋ Boolean
์์ฑ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋จ๋ฝ ํ๊ฐ
๋ ผ๋ฆฌ์ OR ํํ์์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ํ๊ฐ๋๋ฉฐ, ๋ค์ ๊ท์น์ ์ฌ์ฉํ์ฌ "๋จ๋ฝ" ํ๊ฐ๊ฐ ๊ฐ๋ฅํ์ง ํ ์คํธํฉ๋๋ค.
(some truthy expression) || expr
์ ์ฐธ ๊ฐ์ ๊ฐ(truthy) ํํ์์ผ๋ก ๋จ๋ฝ ํ๊ฐ๋ฉ๋๋ค.
๋จ๋ฝ์ ์์ expr
๋ถ๋ถ์ด ํ๊ฐ๋์ง ์์ผ๋ฏ๋ก ์ด๋ก ์ธํ ๋ถ์์ฉ์ด ๋ฐ์ํ์ง ์์์ ์๋ฏธํฉ๋๋ค. (์: expr
์ด ํจ์ ํธ์ถ์ธ ๊ฒฝ์ฐ ํธ์ถ์ด ์ํ๋์ง ์์) ์ด๋ ์ฒซ ๋ฒ์งธ ํผ์ฐ์ฐ์๋ฅผ ํ๊ฐํ ํ์ ํผ์ฐ์ฐ์ ๊ฐ์ด ์ด๋ฏธ ๊ฒฐ์ ๋์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค. ์๋ ์์ ๋ฅผ ์ฐธ์กฐํ์ธ์.
function A() {
console.log("called A");
return false;
}
function B() {
console.log("called B");
return true;
}
console.log(B() || A());
// ํจ์ ํธ์ถ๋ก ์ธํด "called B"๋ฅผ ์ฝ์์ ์ถ๋ ฅํฉ๋๋ค.
// ๊ทธ๋ฐ ๋ค์ true(์ฐ์ฐ์์ ๊ฒฐ๊ณผ ๊ฐ)๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
์ฐ์ฐ์ ์ฐ์ ์์
๋ค์ ํํ์์ ๋์ผํด ๋ณด์ผ ์ ์์ง๋ง, &&
์ฐ์ฐ์๊ฐ ||
์ฐ์ฐ์๋ณด๋ค ๋จผ์ ์คํ๋๊ธฐ ๋๋ฌธ์ ๋์ผํ์ง ์์ต๋๋ค. (์ฐ์ฐ์ ์ฐ์ ์์๋ฅผ ์ฐธ์กฐ).
true || false && false; // &&์ด ๋จผ์ ์คํ๋์ด true๋ฅผ ๋ฐํํฉ๋๋ค.
(true || false) && false; // ๊ทธ๋ฃนํ๊ฐ ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ผ๋ฏ๋ก, false๋ฅผ ๋ฐํํฉ๋๋ค.
์์
OR ์ฌ์ฉํ๊ธฐ
๋ค์ ์ฝ๋๋ ||
(๋
ผ๋ฆฌ์ OR) ์ฐ์ฐ์์ ์๋ฅผ ๋ณด์ฌ์ค๋๋ค.
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๋ก ๋ณํํ๊ธฐ
๋ถ๋ฆฌ์ธ์ ํฌํจํ๋ ์๋ ์ฐ์ฐ์
bCondition1 && bCondition2
ํญ์ ์๋์ ๊ฐ์ต๋๋ค.
!(!bCondition1 || !bCondition2)
OR์ AND๋ก ๋ณํํ๊ธฐ
๋ถ๋ฆฌ์ธ์ ํฌํจํ๋ ์๋์ ์ฐ์ฐ์
bCondition1 || bCondition2
ํญ์ ์๋์ ๊ฐ์ต๋๋ค.
!(!bCondition1 && !bCondition2)
์ค์ฒฉ๋ ๊ดํธ ์ ๊ฑฐ
๋ ผ๋ฆฌ์ ํํ์์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ํ๊ฐ๋๊ธฐ ๋๋ฌธ์ ํน์ ๊ท์น์ ๋ฐ๋ฅด๋ ๊ฒฝ์ฐ ๋ณต์กํ ์์์ ๊ดํธ๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
๋ถ๋ฆฌ์ธ์ ํฌํจํ๋ ๋ค์ ๋ณตํฉ์ ์ธ ์ฐ์ฐ์
bCondition1 && (bCondition2 || bCondition3)
์ธ์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
!(!bCondition1 || !bCondition2 && !bCondition3)
๋ช ์ธ์
Specification |
---|
ECMAScriptยฎ 2026 Language Specification # prod-LogicalORExpression |
๋ธ๋ผ์ฐ์ ํธํ์ฑ
Loadingโฆ