Spec-Zone.ru › JavaScript

Number.isNaN()

Базовый уровень Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Статический метод Number.isNaN() определяет, является ли переданное значение числовым значением NaN, и возвращает false, если входные данные не относятся к типу Number. Это более надёжная версия исходной, глобальной функции isNaN().

Попробовать

function typeOfNaN(x) {
  if (Number.isNaN(x)) {
    return "Number NaN";
  }
  if (isNaN(x)) {
    return "NaN";
  }
}

console.log(typeOfNaN("100F"));
// Expected output: "NaN"

console.log(typeOfNaN(NaN));
// Expected output: "Number NaN"

Синтаксис

Number.isNaN(value)

Параметры

value
Значение для проверки на NaN.

Возвращаемое значение

Булево значение true, если заданное значение является числом со значением NaN. В противном случае — false.

Описание

Функция Number.isNaN() предоставляет удобный способ проверки равенства с NaN. Обратите внимание, что вы не можете проверить равенство с NaN, используя операторы == или ===, поскольку, в отличие от всех других сравнений значений в JavaScript, они всегда возвращают false, когда один операнд является NaN, даже если другой операнд также является NaN.

Поскольку x !== x истинно только для NaN среди всех возможных значений JavaScript, Number.isNaN(x) также можно заменить проверкой на x !== x, хотя последняя менее читабельна.

В отличие от глобальной функции isNaN(), метод Number.isNaN() не принуждает к преобразованию параметра в число. Это делает безопасной передачу значений, которые обычно преобразуются в NaN, но на самом деле не являются тем же значением, что и NaN. Это также означает, что только значения типа Number, которые также являются NaN, возвращают 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, this is coerced to 1
isNaN(null); // false, this is coerced to 0
isNaN("37"); // false, this is coerced to 37
isNaN("37.37"); // false, this is coerced to 37.37
isNaN(""); // false, this is coerced to 0
isNaN(" "); // false, this is coerced to 0

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-number.isnan

Совместимость с браузерами

Десктопные Мобильные Серверные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
isNaN
25
12
15
15
9
25
15
14
9
1.5
4.4
9
1.0.0
1.0
0.10.0

Смотрите также

  • Полифил Number.isNaN в core-js
  • Полифил es-shims Number.isNaN
  • Number
  • isNaN()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API