개념/배경
NaN은 JavaScript 숫자 타입의 특별한 값으로 계산 불능을 의미함 NaN은 어떤 값과도 같지 않으며 자기 자신과도 같지 않음 동등 비교 연산으로는 판별 불가
올바른 판별 방법
Number.isNaN 값이 실제 NaN인지만 검사, 타입 강제 변환 수행 안 함 isNaN 전달된 값을 숫자로 변환한 뒤 검사, 문자열 등에서 오탐 가능 x !== x는 오로지 NaN에서만 참이 되는 성질 활용 가능
주의할 점
외부 입력이 문자열인 경우 숫자로 명시 변환 후 Number.isNaN으로 확인 권장 빈 문자열 Number(’’)는 0, parseInt(’’)는 NaN 반환 차이 주의 0/0, Math.sqrt(-1) 같은 계산에서 NaN 발생 가능 동등 비교나 switch 키로 NaN을 식별하려 하지 말 것
간단 예시
Number.isNaN(NaN) → true Number.isNaN(‘foo’) → false isNaN(‘foo’) → true const x = 0/0, x !== x → true
마무리
실무에서는 Number.isNaN 우선 사용 문자열 입력은 명시 변환 후 검사 구형 런타임에서는 폴리필 또는 x !== x 트릭 보조 사용