Глобальная функция JavaScript isNaN()
Определение и применение
Глобальная функция isNaN() сначала преобразует аргумент в число, затем проверяет, получилось ли
NaN (англ. Not-a-Number — «не число», специальное числовое значение). Возвращает true, если
результат преобразования — NaN, иначе false.
isNaN() не проверяет, является ли исходное значение числом: пустая строка, пробельная строка и
null преобразуются в 0, поэтому дают false. Infinity также даёт
false: бесконечность не является NaN.
Поддержка браузерами
Спецификация: ecma262
Поддерживается во всех основных браузерах с 2015 года.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
isNaN | 1 | 12 | 1 | 3 | 1 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 | 1 |
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
JavaScript синтаксис:
isNaN( value );Спецификация
Значения параметров
| Параметр | Описание |
|---|---|
value |
Значение, которое сначала преобразуется в число, а затем проверяется на NaN.
Обязательный параметр.
|
Исключения
| Тип исключения | Описание |
|---|---|
TypeError |
Аргумент BigInt (большое целое) или Symbol (символьное значение) не допускает такого
неявного преобразования в число. Ошибка также возможна при невозможности получить примитивное значение из
объекта.
|
Примеры, попробуйте сами
Почему isNaN() и Number.isNaN() дают разные ответы
Измените проверяемые строки и сравните проверку с преобразованием в число и без него.
index.html
<p>Результат выполнения выводится в консоль.</p>
main.js
// Функция возвращает true
console.log(isNaN(NaN))
console.log(isNaN(Number.NaN))
console.log(isNaN(0 / 0))
console.log(isNaN(Infinity / Infinity))
console.log(isNaN(-Infinity / Infinity))
// Функция возвращает false
console.log(isNaN(Infinity))
console.log(isNaN(-Infinity))
console.log(isNaN(true))
console.log(isNaN(null))
console.log(isNaN(123))
console.log(isNaN('123'))
console.log(isNaN('1.23'))
console.log(isNaN(''))
console.log(isNaN(' '))
// Отличие метода Number.isNaN от функции isNaN()
console.log(Number.isNaN('NaN')) // false
console.log(isNaN('NaN')) // true
console.log(Number.isNaN(undefined)) // false
console.log(isNaN(undefined)) // true
console.log(Number.isNaN({})) // false
console.log(isNaN({})) // true
// Большие целые и символы не допускают неявного преобразования в число.
for (const value of [1n, Symbol('id')]) {
try {
console.log(isNaN(value))
} catch (error) {
console.log(error.name)
}
console.log(Number.isNaN(value)) // false: преобразования нет.
}
В качестве альтернативной проверки переменной на NaN без использования функции isNaN() вы
можете воспользоваться следующей конструкцией:
Почему NaN не равен самому себе
Замените NaN числом или строкой и сравните результаты проверок.
index.html
<p>Результат выполнения выводится в консоль.</p>
main.js
const x = NaN
console.log(x != x) // true
console.log(x !== x) // true