NaN은 Not A Number(숫자가 아님)를 나타낸다.
NaN을 반환하는 연산에는 5가지 종류가 있다.
(더하면 "가3"이 될 것이다.)
NaN은 다른 모든 값과 비교 했을 때 같지 않고, 다른 NaN 그리고 자기 자신과도 같지 않다. NaN의 판별은 Number.isNaN() 또는 isNaN()을 사용하면 제일 분명하게 수행할 수 있다.
NaN === NaN; // false
isNaN(NaN); // true
Number.isNaN(NaN); // true
또는 자기 자신과 비교했을 때 다른지를 비교하는 함수를 만들어 NaN을 판단할 수도 있다. 자기 자신과 비교했을 때 같지 않은 것은 NaN 뿐이다.
function checkNaN(value) {
return value !== value;
} // true를 반환 한다면 NaN이다.
checkNaN(1); // false
checkNaN(NaN); // true
checkNaN(Number.NaN); // true
isNaN은 현재 값이 NaN이거나 숫자로 변환했을 때 NaN이 되면 참을 반환하지만, Number.isNaN은 현재 값이 NaN이어야만 참을 반환한다.
isNaN('테스트'); // 숫자로 변환 할 때 NaN이니 true
Number.isNaN('테스트'); // 현재 값이 NaN이 아니니 false
또한, 배열 메서드의 includes로는 NaN을 찾을 수 있지만, indexOf 로는 찾을 수 없는 등의 상황도 있으니 주의할 것.
참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/NaN