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

관련 글

더 보기 »

프로덕션 AWS를 AI에게 신뢰하시겠습니까?

대부분의 엔지니어는 그렇게 하지 않을 것이고, 솔직히 그래야 합니다. Playground는 프로덕션 AWS 환경이 아닙니다. 하나의 IAM 실수만으로도 데이터가 노출될 수 있습니다. 하나의 잘못 구성된 보안…