NaN
Сводка
Глобальное свойство NaN
является значением, представляющим не-число (Not-A-Number).
Атрибуты свойства NaN |
|
---|---|
Записываемое | нет |
Перечисляемое | нет |
Настраиваемое | нет |
Интерактивный пример
Описание
NaN
является свойством глобального объекта.
Начальным значением NaN
является Not-A-Number (не-число) — то же самое значение, что и у Number.NaN
. В современных браузерах NaN
является ненастраиваемым и незаписываемым свойством. Даже когда это не так, избегайте его переопределения.
В программах NaN
используется довольно редко. Это возвращаемое значение в ситуациях, когда математические (Math
) функции не срабатывают должным образом (например, при вызове Math.sqrt(-1)
) или когда функция, пытающаяся считать число из строки, терпит неудачу по причине того, что в строке не число (parseInt('blabla')
).
Проверка на равенство NaN
NaN
является неравным (посредством сравнения через ==
, !=
, ===
, and !==
) любому другому значению, включая другое значение NaN. Используйте Number.isNaN()
или isNaN()
, чтобы наиболее понятным образом определить является ли значение значением NaN. Или выполните само-сравнение: NaN, и только NaN, в результате такого сравнения будет неравным самому себе.
js
NaN === NaN; // false
Number.NaN === NaN; // false
isNaN(NaN); // true
isNaN(Number.NaN); // true
function valueIsNaN(v) {
return v !== v;
}
valueIsNaN(1); // false
valueIsNaN(NaN); // true
valueIsNaN(Number.NaN); // true
Тем не менее, обратите внимание на разницу между функцией isNaN()
и методом Number.isNaN()
: первая вернёт true
, если значение в настоящий момент является NaN
, или если оно станет NaN
после того, как преобразуется в число, в то время как последний вернёт true
, только если текущим значением является NaN
:
js
isNaN("hello world"); // true
Number.isNaN("hello world"); // false
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-value-properties-of-the-global-object-nan |
Совместимость с браузерами
BCD tables only load in the browser