단북
프론트엔드 기술 면접·자바스크립트 핵심 개념

동등 연산자와 일치 연산자의 차이점은 무엇인가요?

타입 강제 변환을 하는 == 와 타입까지 비교하는 === 의 차이, 권장 사용법과 함정을 정리합니다.

자바스크립트에는 값을 비교하는 두 가지 연산자가 있습니다. 동등 연산자 ==일치 연산자 === 입니다. 둘의 핵심 차이는 타입 강제 변환(type coercion) 을 하느냐입니다.

== (느슨한 동등)

==는 두 값의 타입이 다르면 한쪽을 변환해서 비교합니다. 이 변환 규칙이 직관과 어긋나 버그의 원인이 되곤 합니다.

1 == '1'; // true  — 문자열을 숫자로 변환
0 == false; // true  — boolean을 숫자로 변환
null == undefined; // true  — 특별히 같다고 정의됨
'' == 0; // true  — 빈 문자열이 0으로 변환
[] == false; // true  — 배열이 ''→0으로 변환

=== (엄격한 일치)

===타입이 다르면 무조건 false, 타입이 같을 때만 값을 비교합니다. 변환이 없어 예측 가능합니다.

1 === '1'; // false — 타입(number vs string)이 다름
0 === false; // false — number vs boolean
null === undefined; // false — 서로 다른 타입
1 === 1; // true

권장: 기본은 ===

예측 불가능한 변환 때문에 실무에서는 ===(그리고 !==)를 기본으로 씁니다. 예외적으로 value == nullnullundefined를 한 번에 검사하는 관용구로 종종 쓰입니다.

// null과 undefined를 모두 잡고 싶을 때
if (value == null) {
  // value가 null 또는 undefined
}

주의: NaN은 어떤 연산자로도 자기 자신과 같지 않습니다(NaN === NaNfalse). NaN 판별은 Number.isNaN()을 씁니다. 또한 ===도 객체는 참조로 비교하므로 {} === {}false입니다.

다음 중 결과가 true인 것은?

이 레슨을 다 읽으셨나요?

완료 표시는 이 브라우저에 저장됩니다.