- 자바스크립트에서 NaN 값 비교하는 방법
자바스크립트에서 NaN은 Not-A-Number(숫자가 아님)를 나타낸다.
NaN을 반환하는 연산에는 아래와 같은 경우들이 있다.
// 1. 숫자로 변환 실패
console.log(parseInt("blabla")); // NaN. 명시적인 경우
console.log(Number(undefined)); // NaN. 명시적인 경우
console.log(Math.abs(undefined)); // NaN. 암시적인 경우
// 2. 결과가 허수인 수학 계산식
console.log(Math.sqrt(-1)); // NaN
// 3. 정의할 수 없는 계산식
console.log(0 * Infinity); // NaN
console.log(1 ** Infinity); // NaN
console.log(Infinity / Infinity); // NaN
console.log(Infinity - Infinity); // NaN
// 4. 피연산자가 NaN이거나 NaN으로 강제 변환되는 메서드 또는 표현식
console.log(7 ** NaN); // NaN
console.log(7 * "blabla"); // NaN
// 5. 유효하지 않은 값이 숫자로 표시되는 기타 경우
console.log(new Date("blabla").getTime(), "".charCodeAt(1)); // NaN. 잘못된 날짜
NaN은 등가비교 연산자로는 값을 판별할 수 없다.
값이 NaN인지 판별하기 위해서는 isNaN()이라는 함수를 사용해야 한다.
NaN === NaN; // false
Number.NaN === NaN; // false
isNaN(NaN); // true.
isNaN(Number.NaN); // true.
// isNaN()과 Number.NaN()의 차이
isNaN("hello world"); // true. 현재 값이 NaN이거나, 숫자로 변환했을 때 NaN이 되면 참을 반환
Number.isNaN("hello world"); // false. 현재 값이 NaN일 때만 참을 반환