JavaScript метод Number.isNaN()
Определение и применение
JavaScript метод isNaN() определяет, является ли передаваемое значение NaN (англ.
Not-a-Number, "не число") и возвращает логическое значение. Метод возвращает true, если передаваемое значение
NaN и его тип Number, в противном случае возвращаемое значение false.
Проверьте поведение в редактируемом примере.
Поддержка браузерами
Спецификация: ecma262
Поддерживается во всех основных браузерах с 2015 года.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
isNaN | 25 | 12 | 15 | 15 | 9 | 25 | 15 | 14 | 9 | 1.5 | 4.4 | 9 |
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
JavaScript синтаксис
Number.isNaN( value );
Спецификация
Значения параметров
| Параметр | Описание |
|---|---|
value |
Значение, которое будет проверяться на NaN. Обязательное значение. |
Возвращаемое значение и особенности
Возвращает boolean. Только числовой NaN даёт true; строка "NaN",
undefined и объект-обёртка дают false. Сравнение NaN ===
NaN всегда false, поэтому оно не заменяет этот метод.
Примеры, попробуйте сами
Чем Number.isNaN() отличается от глобального isNaN()
Замените NaN строкой или undefined и сравните результаты проверок.
index.html
<p>Результат выполнения выводится в консоль.</p>
main.js
// Метод возвращает true
console.log(Number.isNaN(NaN))
console.log(Number.isNaN(Number.NaN))
console.log(Number.isNaN(0 / 0))
console.log(Number.isNaN(Infinity / Infinity))
console.log(Number.isNaN(-Infinity / Infinity))
// Метод возвращает false
console.log(Number.isNaN(Infinity))
console.log(Number.isNaN(-Infinity))
console.log(Number.isNaN(true))
console.log(Number.isNaN(null))
console.log(Number.isNaN(123))
console.log(Number.isNaN('123'))
console.log(Number.isNaN('1.23'))
console.log(Number.isNaN(''))
console.log(Number.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
В качестве альтернативной проверки переменной на NaN без использования функции isNaN() вы
можете воспользоваться следующей конструкцией:
Почему NaN не равен самому себе
Замените NaN строкой или undefined и сравните результаты проверок.
index.html
<p>Результат выполнения выводится в консоль.</p>
main.js
const x = NaN
console.log(x != x) // true
console.log(x !== x) // true