๋ ผ๋ฆฌ์ AND (&&)
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์โฉ.
๋
ผ๋ฆฌ์ AND (&&
) (๋
ผ๋ฆฌ์ ์ฐ๊ฒฐ) ์ฐ์ฐ์๋ ๋ชจ๋ ๋ถ๋ฆฌ์ธ ํผ์ฐ์ฐ์๊ฐ true
๊ฐ ๋์์ ๋ ํด๋น ํผ์ฐ์ฐ์์ ์งํฉ์true
๊ฐ
๋ฉ๋๋ค.
๋ณด๋ค ์ผ๋ฐ์ ์ผ๋ก ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ํ๊ฐํ ๋ ์ฐ์ฐ์๋ ์ฒ์์ผ๋ก ๋ง๋๋ ๊ฑฐ์ง ๊ฐ์ ํผ์ฐ์ฐ์์ ๊ฐ์ ๋ฐํํฉ๋๋ค. ํน์ ๋ชจ๋ ์ฐธ ๊ฐ์ ๊ฐ์ด๋ผ๋ฉด ๋ง์ง๋ง ํผ์ฐ์ฐ์์ ๊ฐ์ ๋ฐํํฉ๋๋ค.
์๋ํด ๋ณด๊ธฐ
const a = 3;
const b = -2;
console.log(a > 0 && b > 0);
// Expected output: false
๊ตฌ๋ฌธ
expr1 && expr2
์ค๋ช
๋
ผ๋ฆฌ์ AND (&&
)์ ํผ์ฐ์ฐ์๋ฅผ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ํ๊ฐํ๋ฉด์ ์ฒซ ๊ฑฐ์ง ๊ฐ์ ํผ์ฐ์ฐ์๋ฅผ
๋ง๋๋ฉด ์ฆ์ ๊ทธ ๊ฐ์ ๋ฐํํฉ๋๋ค. ๋ง์ฝ ๋ชจ๋ ๊ฐ์ด ์ฐธ ๊ฐ์ ๊ฐ์ด๋ผ๋ฉด ๋ง์ง๋ง ํผ์ฐ์ฐ์์ ๊ฐ์ด
๋ฐํ๋ฉ๋๋ค.
๋ง์ฝ ์ด๋ค ๊ฐ์ด true
๋ก ๋ณํ ๊ฐ๋ฅํ๋ค๋ฉด ๊ทธ ๊ฐ์ ์์ ์ฐธ ๊ฐ์ ๊ฐ(truthy)์ด๋ผ
ํฉ๋๋ค. ๋ง์ฝ ์ด๋ค ๊ฐ์ด false
๋ก ๋ณํ ๊ฐ๋ฅํ๋ค๋ฉด ๊ทธ ๊ฐ์ ์์ ๊ฑฐ์ง ๊ฐ์ ๊ฐ(falsy)
์ด๋ผ๊ณ ํฉ๋๋ค.
๊ฑฐ์ง์ผ๋ก ๋ณํ๋ ์ ์๋ ํํ์์ ์์ ๋ ์๋์ ๊ฐ์ต๋๋ค.
false
;null
;NaN
;0
;- ๋น ๋ฌธ์์ด (
""
or''
or``
); undefined
.
AND ์ฐ์ฐ์๋ ๋ถ๋ฆฌ์ธ์ด ์๋ ๊ฐ์ ๋ณด์กดํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ๋ฐํํฉ๋๋ค.
result = "" && "foo"; // result ์ ""(๋น ๋ฌธ์์ด)์ด ํ ๋น๋ฉ๋๋ค
result = 2 && 0; // result ์ 0 ์ด ํ ๋น๋ฉ๋๋ค
result = "foo" && 4; // result ์ 4 ๊ฐ ํ ๋น๋ฉ๋๋ค.
&&
์ฐ์ฐ์๋ ๋ถ๋ฆฌ์ธ์ด ์๋ ํผ์ฐ์ฐ์์ ํจ๊ป ์ฌ์ฉํ ์ ์์ง๋ง, ๋ฐํ ๊ฐ์ ํญ์ ์์ํ ๋ถ๋ฆฌ์ธ์ผ๋ก
๋ณํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ถ๋ฆฌ์ธ ์ฐ์ฐ์๋ก ๊ฐ์ฃผํฉ๋๋ค. ๋ฐํ๊ฐ์ด๋ ์ด๋ ํ ์ผ๋ฐ์ ์ธ ํํ์์ ๋ช
์์ ์ผ๋ก ํด๋น ๋ถ๋ฆฌ์ธ ๊ฐ์ผ๋ก ๋ณํํ๋ ค๋ฉด ์ด์ค
NOT ์ฐ์ฐ์
๋ฅผ ์ฌ์ฉํ๊ฑฐ๋
Boolean
์์ฑ์๋ฅผ ์ฌ์ฉํ์๊ธฐ ๋ฐ๋๋๋ค.
๋จ๋ฝ ํ๊ฐ
๋
ผ๋ฆฌ์ AND ํํ์์ ๋จ๋ฝ(short-circuit, ํน์ ๋จ์ถ) ์ฐ์ฐ์์
๋๋ค. ๊ฐ ํผ์ฐ์ฐ์๋ ๋ถ๋ฆฌ์ธ์ผ๋ก ๋ณํ๋๋ฏ๋ก, ์ด๋ค ๋ณํ์ด
false
๋ก ํ๋ณ๋๋ฉด AND ์ฐ์ฐ์๋ ๊ทธ ์ฆ์ ๋ฉ์ถ๊ณ ๊ฑฐ์ง์ผ๋ก ํ๋ณ๋ ํผ์ฐ์ฐ์์ ์๋์ ๊ฐ์ ๋ฐํํฉ๋๋ค. ๋๋จธ์ง ํผ์ฐ์ฐ์๋
ํ๊ฐํ์ง ์์ต๋๋ค.
์๋ ์ ์ฌ ์ฝ๋๋ฅผ ๊ณ ๋ คํด๋ณด์ธ์.
(some falsy expression) && expr
์ฒซ ๋ฒ์งธ ํผ์ฐ์ฐ์ (some falsy expression)
์ ๊ฑฐ์ง ๊ฐ์ ๊ฐ์ผ๋ก ํ๊ฐ๋๊ธฐ
๋๋ฌธ์, expr
๋ถ๋ถ์ ์ ๋ ํ๊ฐ๋์ง ์์ต๋๋ค. ๋ง์ฝ expr
์ด ํจ์๋ผ๋ฉด ํด๋น ํจ์๋ ์ ๋ ์คํ๋์ง ์์ต๋๋ค.
์๋ ์์ ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
function A() {
console.log("called A");
return false;
}
function B() {
console.log("called B");
return true;
}
console.log(A() && B());
// ํจ์ A๋ฅผ ํธ์ถฃํ๊ธฐ ๋๋ฌธ์ "called A" ๋ก๊ทธ๊ฐ ์ฝ์์ ๋จ์ต๋๋ค.
// && ์ false ๋ฅผ ํ๊ฐํด์ (ํจ์ A๋ false๋ฅผ ๋ฐํํฉ๋๋ค) false์ด ์ฝ์์ ๋ก๊น
๋ฉ๋๋ค.
// AND ์ฐ์ฐ์๋ ๋จ๋ฝ ํ๊ฐ๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ํจ์ B๋ฅผ ๋ฌด์ํฉ๋๋ค.
์ฐ์ฐ์ ์ฐ์ ์์
AND ์ฐ์ฐ์๋ OR ์ฐ์ฐ์๋ณด๋ค ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ฉฐ, ์ด๋ &&
์ฐ์ฐ์๊ฐ ||
์ฐ์ฐ์๋ณด๋ค ๋จผ์ ์คํ๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
(์ฐ์ฐ์ ์ฐ์ ์์์ฐธ๊ณ ).
true || (false && false); // returns true
true && (false || false); // returns false
2 === 3 || (4 < 0 && 1 === 1); // returns false
์์
AND ์ฌ์ฉํ๊ธฐ
๋ค์ ์ฝ๋๋ &&
(๋
ผ๋ฆฌ์ AND) ์ฐ์ฐ์์ ์๋ฅผ ๋ณด์ฌ์ค๋๋ค.
a1 = true && true; // t && t returns true
a2 = true && false; // t && f returns false
a3 = false && true; // f && t returns false
a4 = false && 3 === 4; // f && f returns false
a5 = "Cat" && "Dog"; // t && t returns "Dog"
a6 = false && "Cat"; // f && t returns false
a7 = "Cat" && false; // t && f returns false
a8 = "" && false; // f && f returns ""
a9 = false && ""; // f && f returns false
๋ถ๋ฆฌ์ธ์ ์ํ ๋ณํ ๊ท์น
AND๋ฅผ OR๋ก ๋ณํํ๊ธฐ
๋ถ๋ฆฌ์ธ์ ํฌํจํ๋ ์๋ ์ฐ์ฐ์
bCondition1 && bCondition2;
์ธ์ ๋ ์๋์ ๊ฐ์ต๋๋ค.
!(!bCondition1 || !bCondition2);
OR์ AND๋ก ๋ณํํ๊ธฐ
๋ถ๋ฆฌ์ธ์ ํฌํจํ๋ ๋ค์ ์ฐ์ฐ์
bCondition1 || bCondition2;
์ธ์ ๋ ์๋์ ๊ฐ์ต๋๋ค.
!(!bCondition1 && !bCondition2);
์ค์ฒฉ๋ ๊ดํธ ์ ๊ฑฐ
๋ ผ๋ฆฌ์ ํํ์์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ํ๊ฐ๋๊ธฐ ๋๋ฌธ์ ํน์ ๊ท์น์ ๋ฐ๋ฅด๋ ๊ฒฝ์ฐ ๋ณต์กํ ์์์ ๊ดํธ๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
๋ถ๋ฆฌ์ธ์ ํฌํจํ๋ ๋ค์ ๋ณตํฉ์ ์ฐ์ฐ์
bCondition1 || (bCondition2 && bCondition3);
์ธ์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
bCondition1 || bCondition2 && bCondition3;
๋ช ์ธ์
Specification |
---|
ECMAScriptยฎ 2026 Language Specification # prod-LogicalANDExpression |
๋ธ๋ผ์ฐ์ ํธํ์ฑ
Loadingโฆ