Number.isNaN()

Number.isNaN() 메서드는 주어진 값이 NaN인지 판별합니다. 기존부터 존재한 전역 isNaN() 함수의 더 엄격한 버전입니다.

시도해보기

구문

js
Number.isNaN(value);

매개변수

value

NaN인지 판별할 값.

반환 값

주어진 값의 유형이 Number이고 값이 NaN이면 true, 아니면 false.

설명

NaNNaN인지 계산할 때, 두 동일 연산자 ===== 모두 false로 평가되므로 값의 NaN 여부를 알아내려면 Number.isNaN()이 필요합니다. 이 상황은 다른 모든 JavaScript와 다른 특별한 경우입니다.

전역 isNaN() 함수와 달리, Number.isNaN()은 강제로 매개변수를 숫자로 변환하는 문제를 겪지 않습니다. 이는 이제 보통NaN으로 변환됐을 값이 안전하게 전달되지만, 실제로는 NaN과 같은 값이 아님을 의미합니다. 이는 또한 오직 숫자형이고 또한 NaN인 값만이 true를 반환함을 뜻합니다.

예제

js
Number.isNaN(NaN); // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0); // true

// 예를 들면 이들은 global isNaN()으로는 true가 됐을 것임
Number.isNaN("NaN"); // false
Number.isNaN(undefined); // false
Number.isNaN({}); // false
Number.isNaN("blabla"); // false

// 모두
Number.isNaN(true);
Number.isNaN(null);
Number.isNaN(37);
Number.isNaN("37");
Number.isNaN("37.37");
Number.isNaN("");
Number.isNaN(" ");

폴리필

js
Number.isNaN =
  Number.isNaN ||
  function (value) {
    return value !== value;
  };

명세

Specification
ECMAScript Language Specification
# sec-number.isnan

브라우저 호환성

BCD tables only load in the browser

같이 보기