자바스크립트를 공부하다 보면, 값 비교 연산자인 ==와 ===의 차이점을 이해하는 것이 매우 중요하다. 이 두 연산자는 모두 값의 동등성을 비교하지만, 동작 방식에서 중요한 차이가 있기 때문에 주의하여 사용해야 한다.
동등 연산자(Equality Operator)
== 연산자는 값의 동등성을 비교할 때 사용하는 연산자이다. 그러나 값의 타입이 서로 다를 경우, 타입 변환을 통해 동일한 타입으로 맞춘 후 비교를 수행한다. 이러한 자동 형 변환 때문에, ==는 자주 예상하지 못한 결과를 나타낼 수 있다.
console.log(1 == '1'); //true, '1'이 숫자 1로 변환되어 비교된다.
console.log(true == 1); //true, true가 숫자 1로 변환되어 비교된다.
일치 연산자(Strict Equality Operator)
=== 연산자는 값뿐만 아니라 타입까지 일치해야만 true를 반환한다. ==와 달리 타입 변환이 없기 때문에, 타입이 다르면 무조건 false를 반환한다. 이를 엄격한 비교(strict equality)라고 부른다.
console.log(1 === '1'); //false
console.log(true === 1); //false
사용하는 상황
자바스크립트는 동적 타입 언어이기 때문에 변수의 타입이 실행 중에도 바뀔 수 있다. 이런 특징으로 인해 ==는 타입 변환이 필요한 경우에 유연하게 사용될 수 있지만, 예상하지 못한 결과를 초래할 수 있어 ===가 더 안전하게 사용된다.
=== | 명확하고 예측 가능한 결과가 필요할 때 사용, 타입까지 동일한 비교를 하고 싶을 때 사용 |
== | null, undefined처럼 타입이 달라도 비교를 허용하는 경우가 필요할 때 사용 |
console.log(null == undefined); //true
console.log(null === undefined); //false
결론
위와 같이 ==와 ===의 차이를 이해하면 자바스크립트에서 값 비교를 더욱 정확하게 할 수 있다. ==은 예외사항이 많기 때문에 되도록이면 ===를 사용해 안전한 비교를 수행하고, 특정 상황에서만 ==를 사용하는 것이 좋다.
'Language > JavaScript' 카테고리의 다른 글
[JS]객체(Object) 정의, 호출 (0) | 2024.12.24 |
---|---|
[JS]배열 관련 함수 (2) | 2024.11.25 |
[JS]함수의 다양한 정의 방법 (0) | 2024.11.25 |
[JS]prompt, console.log, alert, document.write (1) | 2024.11.10 |
[JS]true==2는 false지만, if(2) {}는 실행되는 이유 (0) | 2024.11.09 |