The global NaN
property is a value representing Not-A-Number.
NaN
NaN
is a property of the global object.
The initial value of NaN
is Not-A-Number — the same as the value of Number.NaN. In modern browsers, NaN
is a non-configurable, non-writable property. Even when this is not the case, avoid overriding it.
It is rather rare to use NaN
in a program. It is the returned value when Math functions fail (Math.sqrt(-1)
) or when a function trying to parse a number fails (parseInt("blabla")
).
NaN
NaN
compares unequal (via ==
, !=
, ===
, and !==
) to any other value -- including to another NaN value. Use Number.isNaN() or isNaN() to most clearly determine whether a value is NaN. Or perform a self-comparison: NaN, and only NaN, will compare unequal to itself.
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
Created by Mozilla Contributors, license: CC-BY-SA 2.5