Number.isNaN()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Number.isNaN()
정적 메서드는 전달받은 값이 NaN
인지 여부를 결정하고 입력이 Number 유형이 아니라면 false
를 반환합니다. 이 함수는 원래의 전역 isNaN()
함수보다 강력합니다.
시도해보기
구문
Number.isNaN(value)
매개변수
반환 값
주어진 숫자가 NaN
값을 가진다면 true
불리언 값을, 그렇지 않다면 false
를 반환합니다.
설명
Number.isNaN()
함수는 NaN
과의 동등성을 확인하는 편리한 방법을 제공합니다. JavaScript에서 ==
또는 ===
연산자를 사용하여 NaN
과의 동등성을 시험할 수 없다는 점을 유의하세요. 모든 다른 값 비교와는 달리, 이 연산자는 한 피연산자가 NaN
일 때 항상 false
로 평가되며, 또 다른 피연산자가 NaN
일 때도 마찬가지입니다.
JavaScript의 모든 가능한 값 중에서 x !== x
가 true
인 경우는 NaN
뿐이므로, Number.isNaN(x)
는 x !== x
테스트로 대체될 수 있습니다. 다만 후자가 가독성이 떨어진다는 단점이 있습니다.
전역 isNaN()
함수와는 달리, Number.isNaN()
메서드는 매개변수를 강제로 숫자로 변환하지 않습니다. 이로 인해 일반적으로는 NaN
으로 변환되지만 실제로는 NaN
과 같은 값이 아닌 값들을 안전하게 전달할 수 있습니다. 또한 이는 NaN
인 Number 타입의 값만이 true
를 반환한다는 것을 의미합니다.
예제
isNaN() 사용하기
Number.isNaN(NaN); // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0); // true
Number.isNaN(37); // false
Number.isNaN() 과 전역 isNaN()과의 차이점
Number.isNaN()
은 매개변수를 숫자로 변환하려는 시도를 하지 않아서 숫자가 아니면 언제나 false
를 반환합니다. 아래 코드는 모두 false
입니다.
Number.isNaN("NaN");
Number.isNaN(undefined);
Number.isNaN({});
Number.isNaN("blabla");
Number.isNaN(true);
Number.isNaN(null);
Number.isNaN("37");
Number.isNaN("37.37");
Number.isNaN("");
Number.isNaN(" ");
전역 isNaN()
은 매개변수를 숫자로 강제로 변환시킵니다.
isNaN("NaN"); // true
isNaN(undefined); // true
isNaN({}); // true
isNaN("blabla"); // true
isNaN(true); // false, 1로 강제 변환됩니다
isNaN(null); // false, 0으로 강제 변환됩니다
isNaN("37"); // false, 37로 강제 변환됩니다
isNaN("37.37"); // false, 37.37로 강제 변환됩니다
isNaN(""); // false, 0으로 강제 변환됩니다
isNaN(" "); // false, 0으로 강제 변환됩니다
명세서
Specification |
---|
ECMAScript Language Specification # sec-number.isnan |
브라우저 호환성
BCD tables only load in the browser