자바스크립트에서 NaN은 비교연산자(==, ===, !=, !== 등) 으로 비교가 안된다. 왜냐하면 NaN은 자기자신과 비교해도 다르다고 하기 때문이다!! (https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/NaN)
let temp = Number("안녕하세요"); // temp는 NaN이 된다.
temp === NaN // false!⚠️
자바스크립트는 자료형이 자꾸 바뀌어서 골치아픈데 NaN에서 직접비교하면 원하는 결과가 안나온다. 😭
NaN인제 체크하고 싶다면 함수를 사용하면된다!
또는 자기 자신과 다른지 체크하면 된다.. NaN은 유일하게 자기과 비교했을 때 다르다고 하는 값이다.
function valueIsNaN(num) {
return num !== num; // NaN을 제외한 모든 값은 false, NaN만 유일하게 true로 나온다.
}
🌟 Object.is()
Object.is() 는 객체안의 두 값이 같은지 비교해주는 함수이다.
let isNaN = NaN;
Object.is(isNaN, NaN) // true!
이 함수를 사용해서도 가능한데 MDN NaN문서에서는 isNaN() 함수를 추천해준다.
🌟 isNaN()
isNaN()과 Number.isNaN() 두가지 방법이 있는데 혼동해서는 안된다.
isNaN() 은 현재 값이 NaN이거나 숫자로 바꾸었을 때 NaN 인경우 true 이다.
Number.isNaN() 은 현재 값이 NaN 이어만 true 이다.
isNaN('NaN인가요?') // true
Number.isNaN('NaN인가요?') // false
NaN 인지 비교할 때 상황에 맞춰서 적절한 함수를 사용하면 될 것이다.
'Javascript' 카테고리의 다른 글
[JavaScript] DOM의 기초 (0) | 2023.08.26 |
---|---|
자바스크립트(JS) 기초 개념 (3) - 함수와 스코프 (0) | 2023.07.17 |
자바스크립트(JS) 기초 개념 (2) (1) | 2023.07.10 |
자바스크립트(JS) 기초 개념 (1) (0) | 2023.07.06 |