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

๋…ผ๋ฆฌ์  NOT (!)

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์›”โฉ.

๋…ผ๋ฆฌ์  NOT (!) (๋…ผ๋ฆฌ์  ๋ณด์ˆ˜, ๋ถ€์ •) ์—ฐ์‚ฐ์ž๋Š” ์ฐธ์„ ๊ฑฐ์ง“์œผ๋กœ ๋งŒ๋“ค๊ณ , ๋ฐ˜๋Œ€๋กœ ๊ฑฐ์ง“์„ ์ฐธ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ถˆ๋ฆฌ์–ธ (๋…ผ๋ฆฌ์ ) ๊ฐ’๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ถˆ๋ฆฌ์–ธ์ด ์•„๋‹Œ ๊ฐ’๋“ค๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋œ๋‹ค๋ฉด, ๋‹จ์ผ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ true๋กœ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์‹œ๋„ํ•ด ๋ณด๊ธฐ

const a = 3;
const b = -2;

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

๊ตฌ๋ฌธ

js
!x

์„ค๋ช…

๋‹จ์ผ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ true๋กœ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด, true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

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

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

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

! ์—ฐ์‚ฐ์ž๋Š” ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์ด ์•„๋‹Œ ํ”ผ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฐ˜ํ™˜๊ฐ’์ด ํ•ญ์ƒ ์›์‹œํ˜• ๋ถˆ๋ฆฌ์–ธ์œผ๋กœ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ๋ถˆ๋ฆฌ์–ธ ์—ฐ์‚ฐ์ž๋กœ ๊ฐ„์ฃผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช…์‹œ์ ์œผ๋กœ ๋ฐ˜ํ™˜๊ฐ’์„ (๋˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์–ด๋–ค ํ‘œํ˜„์‹์„) ๋Œ€์‘ํ•˜๋Š” ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด์ค‘ NOT ์—ฐ์‚ฐ์ž (!!) ๋˜๋Š” Boolean ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์˜ˆ์ œ

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

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

js
!true; // !t ๋Š” false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค
!false; // !f ๋Š” true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค
!""; // !f ๋Š” true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค
!"Cat"; // !t ๋Š” false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค

์ด์ค‘ NOT (!!)

NOT ์—ฐ์‚ฐ์ž๋ฅผ ์—ฐ์†์œผ๋กœ 2๊ฐœ ์‚ฌ์šฉํ•ด์„œ ๋ช…์‹œ์ ์œผ๋กœ ์–ด๋–ค ๊ฐ’์„ ๊ทธ์— ๋Œ€์‘ํ•˜๋Š” ์›์‹œํ˜• ๋ถˆ๋ฆฌ์–ธ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋„๋ก ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€ํ™˜์€ ๊ฐ’์˜ "์ฐธ ๊ฐ™์Œ" ๋˜๋Š” "๊ฑฐ์ง“ ๊ฐ™์Œ"์— ๊ธฐ๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค(์ฐธ ๊ฐ™์€ ๊ฐ’๊ณผ ๊ฑฐ์ง“ ๊ฐ™์€ ๊ฐ’์„ ์ฐธ๊ณ ํ•˜์„ธ์š”).

Boolean ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ๋„ ๋˜‘๊ฐ™์€ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

js
!!true; // !!truthy๋Š” true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
!!{}; // !!truthy๋Š” true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ž„์˜์˜ object๋Š” ์ฐธ ๊ฐ™์€ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.
!!new Boolean(false); // .valueOf()์—์„œ false๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋ถˆ๋ฆฌ์–ธ ๊ฐ์ฒด๋„์š”!
!!false; // !!falsy๋Š” false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
!!""; // !!falsy๋Š” false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
!!Boolean(false); // !!falsy๋Š” false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

NOT ์‚ฌ์ด์—์„œ์˜ ๋ณ€ํ™˜

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

js
!!bCondition

๋Š” ํ•ญ์ƒ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

js
bCondition

๋ช…์„ธ์„œ

Specification
ECMAScriptยฎ 2026 Language Specification
# sec-logical-not-operator

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

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