Это экспериментальная технология, часть предложения Harmony (ECMAScript 6).
Поскольку спецификация этой технологии ещё не стабилизировалась, проверьте таблицу совместимости её использования в различных браузерах. Также обратите внимание, что синтаксис и поведение экспериментальной технологии могут быть изменены в будущих версиях браузеров в соответствии с изменениями в спецификации.
Сводка
Метод Number.isNaN()
определяет, является ли переданное значение NaN
. Это более надёжная версия оригинальной глобальной функции isNaN()
.
Синтаксис
Number.isNaN(value)
Параметры
value
- Значение, проверяемое на
NaN
.
Описание
Поскольку оба оператора проверки на равенство, ==
и ===
, вычисляются в false
при проверке, что NaN
и есть NaN
, появляется необходимость в функции Number.isNaN()
. Эта ситуация отличается от всех других возможных сравнений в JavaScript.
В отличие от глобальной функции isNaN()
, Number.isNaN()
не имеет проблемы принудительного преобразования параметра в число. Это значит, что в него безопасно передавать значения, которые обычно превращаются в NaN
, но на самом деле NaN
не являются. Также это значит, что метод возвращает true
только для числовых значений, имеющих значение NaN
.
Примеры
Number.isNaN(NaN); // true Number.isNaN(Number.NaN); // true Number.isNaN(0 / 0) // true // При использовании глобальной функции isNaN() это всё будет true Number.isNaN('NaN'); // false Number.isNaN(undefined); // false Number.isNaN({}); // false Number.isNaN('blabla'); // false // А это всё в любом случае будет false Number.isNaN(true); Number.isNaN(null); Number.isNaN(37); Number.isNaN('37'); Number.isNaN('37.37'); Number.isNaN(''); Number.isNaN(' ');
Полифилл
Number.isNaN = Number.isNaN || function(value) { return typeof value === 'number' && isNaN(value); }
Спецификации
Спецификация | Статус | Комментарии |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) |
Стандарт | Изначальное определение. |
Совместимость с браузерами
Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Базовая поддержка | 25 | 15 (15) | Нет | (Да) | Нет |
Возможность | Android | Chrome для Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Базовая поддержка | Нет | ? | 15.0 (15) | Нет | Нет | Нет |