JavaScript의 가장 이상한 비교
발행: (2026년 2월 16일 오후 07:18 GMT+9)
2 분 소요
원문: Dev.to
Source: Dev.to
[] == false 가 true 인 이유
[] == false // true
== 연산자는 형 변환(type coercion) 을 수행합니다:
false가0으로 변환됩니다.[]은 먼저 빈 문자열""로 변환됩니다.- 빈 문자열
""은 다시0으로 변환됩니다.
따라서 비교는 다음과 같이 됩니다:
0 == 0 // true
[] == ![] 가 true 인 이유
[] == ![] // true
평가 단계:
![]– 빈 배열은 truthy 이므로!를 적용하면false가 됩니다.- 이제 식은
[] == false가 되고, 앞에서 본 것처럼 이는true로 평가됩니다.
정리
== 연산자는 암시적인 형 변환 때문에 예상치 못한 결과를 만들 수 있습니다.
대부분의 개발자는 형 변환을 수행하지 않아 이러한 함정을 피할 수 있는 엄격한 동등 연산자 === 를 선호합니다.
[] === false // false
[] === ![] // false
형 변환이 어떻게 작동하는지 이해하면 JavaScript 비교에서의 “이상함”을 없앨 수 있습니다. 즐거운 코딩 되세요! ✨