TIL

Node.js의 !! 키워드 정리

하얀잔디 2025. 10. 22. 22:39

Node.js 코드 보다 보면
!!변수 이런 거 종종 보임.
처음 보면 “이게 뭐임?!” 싶음.

 

 


 

 뜻

!!는 “값을 boolean으로 바꾸는 연산자”임.
자바스크립트에서는 모든 값이 truthy(참 같은 값) 또는 falsy(거짓 같은 값)으로 평가됨.
!!는 그걸 명확한 true / false로 변환함.

 

 


 예시

const name = "sion"; console.log(!!name); // true

const empty = ""; console.log(!!empty); // false

const num = 0; console.log(!!num); // false

const obj = {}; console.log(!!obj); // true

const undef = undefined; console.log(!!undef); // false​

 

 동작 원리

  1. 첫 번째 !  부정(negation)
    → truthy → false / falsy → true
  2. 두 번째 ! → 다시 부정해서 원래 논리값으로 복원

결과적으로 boolean 값만 남음.

 
!"" // true (빈 문자열은 falsy) !!"" // false (boolean으로 명확히 바뀜)

 

 

💡 왜 쓰는가?

  • if 조건문 같은 곳에서 명시적으로 boolean 변환하고 싶을 때
  • API 응답값이나 객체 속성 존재 여부를 깔끔하게 처리할 때
 
if (!!user.name) { console.log("이름 있음"); }

또는

 
const isLoggedIn = !!session.user;

이렇게 true/false 플래그로 딱 떨어지게 쓰면 코드 읽기 편함.

 

 


🧩 비슷한 예시

 
Boolean(value); // 동일한 역할

둘 다 boolean으로 바꾸지만,
개발자들 사이에서는 !!가 더 짧고 흔하게 쓰임.


🚫 주의점

  • 타입 변환이 숨겨져 있어서 가독성 떨어질 수 있음
    (특히 JS 초보자에게 혼란 줄 수 있음)
  • 명시적으로 Boolean() 쓰는 게 나을 때도 있음
    (팀 컨벤션에 따라 다름)

✍️ 정리

표현의미결과
!value 부정 true/false 반전
!!value boolean 변환 명확한 true/false
Boolean(value) boolean 변환 (명시적) true/false

 

 

요약하자면,
!!는 값이 존재하는지 빠르게 확인할 때 쓰는 boolean 변환기임.
짧고 직관적이지만 남용은 금물.
적절히 쓰면 코드 깔끔해짐.