0 == '0'
는 하나는 string, 하나는 Number형이지만 타입 변환 후 같은 값이라고 판단되므로 true로 반환됨0 == '0'
의 경우 값은 같지만 type이 다르므로 false를 반환함NaN은 자신과 비교해도 false가 나옴
console.log(NaN == NaN); // false
console.log(NaN === NaN); // false
그래서 어떤 값이 NaN값인지를 검사하고 싶다면 Number.isNaN(어떤값)
또는 ES6에서 도입된 Object.is
메서드를 사용해야함
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN(10)); // false
console.log(Object.is(NaN, NaN)); // true
console.log(Object.is(10, NaN)); // false
💡
==
과===
중 어떤 것을 사용해야 하는지 ?
=== 으로 좀 더 엄격하게 비교하는 것이 예상치 못한 타입 변환으로 인한 오류를 방지하기 때문에 자바스크립트에서 값을 비교할 때 === 이 더 권장됨. == 연산자는 명시적으로 타입 변환이 필요한 상황에만 사용하는 것이 좋음