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
Спецификации
Совместимость с браузерами
| Десктопные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
Смотрите также
© 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