Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript의 이중 부정(!!) 연산자란? 값의 진위 여부를 Boolean으로 변환하는 방법

이중 부정(!!) 연산자란?

JavaScript에서 이중 부정(double negation) 연산자(!!)는 논리 NOT 연산자(!)를 두 번 연달아 사용한 것입니다. 어떤 값을 두 번 반전시키기 때문에 결과적으로 그 값의 진위 여부(truthiness)에 해당하는 Boolean 값(true 또는 false)을 얻을 수 있습니다.

쉽게 말해, 임의의 값을 명시적으로 Boolean 타입으로 변환하고 싶을 때 가장 간결하게 사용할 수 있는 방법이 바로 !!입니다.

동작 원리: !(!p)로 이해하기

이중 부정은 !!p!(!p)처럼 생각하면 이해하기 쉽습니다.

  • p가 false로 평가되는 값(falsy value)이라면 → !p는 true가 되고, 다시 한 번 반전된 !!p는 false가 됩니다.
  • p가 true로 평가되는 값(truthy value)이라면 → !p는 false가 되고, !!p는 true가 됩니다.

예제 코드

다양한 값에 대해 !! 연산자가 어떻게 동작하는지 살펴보겠습니다.

0 === false          // false
!!0 === false        // true
!!parseInt("foo") === false  // true (NaN은 falsy)
!!1 === true         // true
!!-1 === true        // true
!!false === false    // true
!!true === true      // true

왜 사용할까?

JavaScript에서는 0, ""(빈 문자열), null, undefined, NaN 같은 값들이 조건문에서 false로 취급됩니다. 하지만 이 값들은 Boolean 타입 자체는 아니기 때문에, 실제 true/false 값이 필요한 경우 !!를 사용해 명확하게 변환할 수 있습니다.

const hasItems = !!items.length; // items가 있으면 true, 없으면 false
console.log(typeof !!"hello");   // "boolean"

이처럼 !!는 코드를 짧고 직관적으로 만들어 주며, 값의 존재 여부를 검사하거나 API 응답 등에서 Boolean 타입을 보장해야 할 때 유용하게 활용됩니다.