Spec-Zone.ru › JavaScript

isNaN()

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

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

Функция isNaN() определяет, является ли значение NaN, предварительно преобразуя значение в число, если это необходимо. Поскольку приведение типов (coercion) внутри функции isNaN() может быть неожиданным, вы можете предпочесть использовать Number.isNaN().

Попробовать

function milliseconds(x) {
  if (isNaN(x)) {
    return "Not a Number!";
  }
  return x * 1000;
}

console.log(milliseconds("100F"));
// Expected output: "Not a Number!"

console.log(milliseconds("0.0314E+2"));
// Expected output: 3140

Синтаксис

isNaN(value)

Параметры

value
Проверяемое значение.

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

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

Описание

isNaN() является свойством-функцией глобального объекта.

Для числовых значений isNaN() проверяет, является ли число значением NaN. Когда аргумент функции isNaN() не имеет типа Number, значение сначала приводится к числу, а затем результирующее значение сравнивается с NaN.

Такое поведение isNaN() для нечисловых аргументов может сбивать с толку! Например, пустая строка приводится к 0, а логическое значение (boolean) приводится к 0 или 1; оба значения интуитивно являются «не числами», но они не приводятся к NaN, поэтому isNaN() возвращает false. Следовательно, isNaN() не отвечает ни на вопрос «является ли входное значение значением с плавающей запятой NaN», ни на вопрос «не является ли входное значение числом».

Number.isNaN() является более надёжным способом проверить, является ли значение числовым значением NaN или нет. В качестве альтернативы можно использовать выражение x !== x, и ни одно из этих решений не подвержено ложным срабатываниям, которые делают глобальную функцию isNaN() ненадёжной. Чтобы проверить, является ли значение числом, используйте typeof x === "number".

Функция isNaN() отвечает на вопрос: «эквивалентно ли входное значение функционально NaN при использовании в числовом контексте». Если isNaN(x) возвращает false, вы можете использовать x в арифметическом выражении так, как если бы это было допустимое число, не являющееся NaN. Если isNaN(x) возвращает true, x будет приведено к NaN и большинство арифметических выражений вернут NaN (поскольку NaN распространяется). Вы можете использовать это, например, для проверки того, является ли аргумент функции арифметически обрабатываемым (используемым «как» число), и обрабатывать значения, которые не похожи на числа, путём генерации ошибки, предоставления значения по умолчанию и т. д. Таким образом, вы можете создать функцию, которая использует всю универсальность, предоставляемую JavaScript, неявно преобразовывая значения в зависимости от контекста.

Примечание: Оператор + выполняет как сложение чисел, так и конкатенацию строк. Следовательно, даже если isNaN() возвращает false для обоих операндов, оператор + всё равно может вернуть строку, поскольку он не используется как арифметический оператор. Например, isNaN("1") возвращает false, но "1" + 1 возвращает "11". Чтобы быть уверенным, что вы работаете с числами, приведите значение к числу и используйте Number.isNaN() для проверки результата.

Примеры

Обратите внимание, как isNaN() возвращает true для значений, которые не являются значением NaN, но также не являются числами:

isNaN(NaN); // true
isNaN(undefined); // true
isNaN({}); // true

isNaN(true); // false
isNaN(null); // false
isNaN(37); // false

// Strings
isNaN("37"); // false: "37" is converted to the number 37 which is not NaN
isNaN("37.37"); // false: "37.37" is converted to the number 37.37 which is not NaN
isNaN("37,5"); // true
isNaN("123ABC"); // true: Number("123ABC") is NaN
isNaN(""); // false: the empty string is converted to 0 which is not NaN
isNaN(" "); // false: a string with spaces is converted to 0 which is not NaN

// Dates
isNaN(new Date()); // false; Date objects can be converted to a number (timestamp)
isNaN(new Date().toString()); // true; the string representation of a Date object cannot be parsed as a number

// Arrays
isNaN([]); // false; the primitive representation is "", which converts to the number 0
isNaN([1]); // false; the primitive representation is "1"
isNaN([1, 2]); // true; the primitive representation is "1,2", which cannot be parsed as number

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

Спецификация
Спецификация языка ECMAScript® 2027
# sec-isnan-number

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

Десктопные Мобильные Серверные
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
1
12
1
3
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0

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

  • NaN
  • 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/isNaN

Spec-Zone.ru

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