동등 연산자와 일치 연산자의 차이점은 무엇인가요?
타입 강제 변환을 하는 == 와 타입까지 비교하는 === 의 차이, 권장 사용법과 함정을 정리합니다.
자바스크립트에는 값을 비교하는 두 가지 연산자가 있습니다. 동등 연산자 == 와 일치 연산자 === 입니다. 둘의 핵심 차이는 타입 강제 변환(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 == null은 null과 undefined를 한 번에 검사하는 관용구로 종종 쓰입니다.
// null과 undefined를 모두 잡고 싶을 때
if (value == null) {
// value가 null 또는 undefined
}주의:
NaN은 어떤 연산자로도 자기 자신과 같지 않습니다(NaN === NaN은false).NaN판별은Number.isNaN()을 씁니다. 또한===도 객체는 참조로 비교하므로{} === {}는false입니다.
다음 중 결과가 true인 것은?
이 레슨을 다 읽으셨나요?
완료 표시는 이 브라우저에 저장됩니다.