This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

๋…ผ๋ฆฌ์  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

๊ตฌ๋ฌธ

js
expr1 && expr2

์„ค๋ช…

๋…ผ๋ฆฌ์  AND (&&)์€ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ‰๊ฐ€ํ•˜๋ฉด์„œ ์ฒซ ๊ฑฐ์ง“ ๊ฐ™์€ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋งŒ๋‚˜๋ฉด ์ฆ‰์‹œ ๊ทธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋ชจ๋“  ๊ฐ’์ด ์ฐธ ๊ฐ™์€ ๊ฐ’์ด๋ผ๋ฉด ๋งˆ์ง€๋ง‰ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์–ด๋–ค ๊ฐ’์ด true๋กœ ๋ณ€ํ™˜ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๊ทธ ๊ฐ’์€ ์†Œ์œ„ ์ฐธ ๊ฐ™์€ ๊ฐ’(truthy)์ด๋ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์–ด๋–ค ๊ฐ’์ด false๋กœ ๋ณ€ํ™˜ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๊ทธ ๊ฐ’์€ ์†Œ์œ„ ๊ฑฐ์ง“ ๊ฐ™์€ ๊ฐ’(falsy) ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ฑฐ์ง“์œผ๋กœ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ๋Š” ํ‘œํ˜„์‹์˜ ์˜ˆ์ œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • false;
  • null;
  • NaN;
  • 0;
  • ๋นˆ ๋ฌธ์ž์—ด ("" or '' or ``);
  • undefined.

AND ์—ฐ์‚ฐ์ž๋Š” ๋ถˆ๋ฆฌ์–ธ์ด ์•„๋‹Œ ๊ฐ’์„ ๋ณด์กดํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

js
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์ด ํ•จ์ˆ˜๋ผ๋ฉด ํ•ด๋‹น ํ•จ์ˆ˜๋Š” ์ ˆ๋Œ€ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ์˜ˆ์ œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

js
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 ์—ฐ์‚ฐ์ž๋ณด๋‹ค ๋†’์€ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ด๋Š” && ์—ฐ์‚ฐ์ž๊ฐ€ || ์—ฐ์‚ฐ์ž๋ณด๋‹ค ๋จผ์ € ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. (์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„์ฐธ๊ณ ).

js
true || (false && false); // returns true
true && (false || false); // returns false
2 === 3 || (4 < 0 && 1 === 1); // returns false

์˜ˆ์ œ

AND ์‚ฌ์šฉํ•˜๊ธฐ

๋‹ค์Œ ์ฝ”๋“œ๋Š” &&(๋…ผ๋ฆฌ์  AND) ์—ฐ์‚ฐ์ž์˜ ์˜ˆ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

js
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๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ

๋ถˆ๋ฆฌ์–ธ์„ ํฌํ•จํ•˜๋Š” ์•„๋ž˜ ์—ฐ์‚ฐ์€

js
bCondition1 && bCondition2;

์–ธ์ œ๋‚˜ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

js
!(!bCondition1 || !bCondition2);

OR์„ AND๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ

๋ถˆ๋ฆฌ์–ธ์„ ํฌํ•จํ•˜๋Š” ๋‹ค์Œ ์—ฐ์‚ฐ์€

js
bCondition1 || bCondition2;

์–ธ์ œ๋‚˜ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

js
!(!bCondition1 && !bCondition2);

์ค‘์ฒฉ๋œ ๊ด„ํ˜ธ ์ œ๊ฑฐ

๋…ผ๋ฆฌ์  ํ‘œํ˜„์‹์€ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ‰๊ฐ€๋˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ๊ทœ์น™์„ ๋”ฐ๋ฅด๋Š” ๊ฒฝ์šฐ ๋ณต์žกํ•œ ์‹์—์„œ ๊ด„ํ˜ธ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถˆ๋ฆฌ์–ธ์„ ํฌํ•จํ•˜๋Š” ๋‹ค์Œ ๋ณตํ•ฉ์  ์—ฐ์‚ฐ์€

js
bCondition1 || (bCondition2 && bCondition3);

์–ธ์ œ๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

js
bCondition1 || bCondition2 && bCondition3;

๋ช…์„ธ์„œ

Specification
ECMAScriptยฎ 2026 Language Specification
# prod-LogicalANDExpression

๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ

๊ฐ™์ด ๋ณด๊ธฐ