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
동작 원리
- 첫 번째 ! → 부정(negation)
→ truthy → false / falsy → true - 두 번째 ! → 다시 부정해서 원래 논리값으로 복원
결과적으로 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 변환기임.
짧고 직관적이지만 남용은 금물.
적절히 쓰면 코드 깔끔해짐.
'TIL' 카테고리의 다른 글
| DB CPU 스파이크 원인 추적기 (0) | 2025.10.27 |
|---|---|
| HTTPS 안전하지 않음 으로 바뀐다면 http 통신인가? (0) | 2025.10.23 |
| Redis 메모리 정책 삽질기 — noeviction → allkeys-lru 전환 (0) | 2025.10.22 |
| 갑자기 redis 안되는 현상 (0) | 2025.10.18 |
| 다중 소켓서버 삽질 후기 (feat. 미친 20%) (0) | 2025.10.13 |