isNaN
함수 사양의 가장 초기 버전 이후로 숫자가 아닌 인수에 대한 동작은 혼란 스러웠습니다. isNaN
함수에 대한 인수가 숫자 유형이 아닌 경우 값은 먼저 숫자로 강제 변환됩니다. 그런 다음 결과 값을 테스트하여 NaN
인지 확인합니다. 따라서 숫자 유형으로 강제 변환 할 때 유효한 비 NaN 숫자 값 (특히 강제 변환시 숫자 값 0 또는 1을 제공하는 빈 문자열 및 부울 프리미티브)이되는 비 숫자의 경우 “false”반환 값은 예상치 못한 것일 수 있습니다. 예를 들어 빈 문자열은 확실히 “숫자가 아닙니다.” 혼란은 “숫자가 아님”이라는 용어가 IEEE-754 부동 소수점 값으로 표현되는 숫자에 대해 특정 의미를 가지고 있다는 사실에서 비롯됩니다. 이 함수는 “이 값이 숫자 값으로 강제 변환 될 때 IEEE-754″숫자가 아님 “값입니까?”라는 질문에 답하는 것으로 해석되어야합니다. “
ECMAScript 2015에는 함수. Number.isNaN(x)
는 x
가 NaN
인지 여부를 테스트하는 신뢰할 수있는 방법입니다. 그러나 Number.isNaN
에서도 NaN
의 의미는 “숫자가 아니라”가 아니라 정확한 숫자 의미로 유지됩니다. 또는 Number.isNaN
가없는 경우 (x != x)
표현식이 x
는 NaN
이거나 아닙니다. 결과는 isNaN
를 신뢰할 수 없게 만드는 오탐의 영향을받지 않기 때문입니다.
isNaN
의 폴리 필은 다음과 같습니다 (폴리 필은 NaN
의 고유 한 절대 같지 않음 특성을 활용 함).