동등 연산자(==)란?
더블 등호(==)는 추상적 동등 비교 연산자입니다. 이 연산자는 비교를 수행하기 전에 두 피연산자를 같은 타입으로 자동 변환(타입 강제 변환, type coercion)한 뒤 값을 비교합니다. 따라서 타입이 달라도 값이 같다고 판단되면 true를 반환합니다.
예시:
4 == 4 // true '4' == 4 // true 4 == '4' // true 0 == false // true
위 예시에서 문자열 '4'와 숫자 4, 그리고 false와 0이 같다고 평가되는 것은, 비교 전에 자바스크립트 엔진이 암묵적으로 타입을 변환하기 때문입니다.
일치 연산자(===)란?
트리플 등호(===)는 엄격한 일치 비교 연산자입니다. 타입 변환 없이 값과 타입을 모두 비교하며, 타입이 다르거나 내용이 다르면 false를 반환합니다.
예시:
4 === 4 // true
4 === '4' // false
var v1 = {'value': 'key'};
var v2 = {'value': 'key'};
v1 === v2 // false객체 비교 시 주의할 점
위 예시에서 v1과 v2는 내용이 완전히 같은 객체임에도 불구하고 false를 반환합니다. 그 이유는 객체는 값이 아닌 참조(reference)로 비교되기 때문입니다. 두 변수는 각각 서로 다른 메모리 위치에 있는 별개의 객체를 가리키고 있으므로, 내용이 동일하더라도 일치하지 않는 것으로 판단됩니다.
정리 및 사용 권장 사항
==는 비교 전 타입을 자동으로 변환하므로, 의도하지 않은 결과가 나올 수 있습니다. 예를 들어null == undefined는true로 평가됩니다.===는 타입 변환 없이 엄격하게 비교하므로 코드의 예측 가능성과 안정성이 높아집니다.- 따라서 특별한 이유가 없다면 대부분의 경우
===(그리고!==)를 사용하는 것이 좋습니다.