JavaScript의 가장 이상한 비교

발행: (2026년 2월 16일 오후 07:18 GMT+9)
2 분 소요
원문: Dev.to

Source: Dev.to

[] == falsetrue 인 이유

[] == false   // true

== 연산자는 형 변환(type coercion) 을 수행합니다:

  1. false0 으로 변환됩니다.
  2. [] 은 먼저 빈 문자열 "" 로 변환됩니다.
  3. 빈 문자열 "" 은 다시 0 으로 변환됩니다.

따라서 비교는 다음과 같이 됩니다:

0 == 0   // true

[] == ![]true 인 이유

[] == ![]   // true

평가 단계:

  1. ![] – 빈 배열은 truthy 이므로 ! 를 적용하면 false 가 됩니다.
  2. 이제 식은 [] == false 가 되고, 앞에서 본 것처럼 이는 true 로 평가됩니다.

정리

== 연산자는 암시적인 형 변환 때문에 예상치 못한 결과를 만들 수 있습니다.
대부분의 개발자는 형 변환을 수행하지 않아 이러한 함정을 피할 수 있는 엄격한 동등 연산자 === 를 선호합니다.

[] === false   // false
[] === ![]     // false

형 변환이 어떻게 작동하는지 이해하면 JavaScript 비교에서의 “이상함”을 없앨 수 있습니다. 즐거운 코딩 되세요! ✨

0 조회
Back to Blog

관련 글

더 보기 »

왜 당신은 Developer가 되었나요?

‘Why did you become a Developer?’ 표지 이미지: https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-t...