Web/JavaScript/Reference/Global objects/Number/isNaN
The Number.isNaN() method determines whether the passed value is NaN and its type is Number. It is a more robust version of the original, global isNaN().
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Syntax
Number.isNaN(value)
Parameters
value- The value to be tested for
NaN.
Return value
true if the given value is NaN and its type is Number; otherwise, false.
Description
Due to both equality operators, == and ===, evaluating to false when checking if NaN is NaN, the function Number.isNaN() has become necessary. This situation is unlike all other possible value comparisons in JavaScript.
In comparison to the global isNaN() function, Number.isNaN() doesn't suffer the problem of forcefully converting the parameter to a number. This means it is now safe to pass values that would normally convert to NaN, but aren't actually the same value as NaN. This also means that only values of the type number, that are also NaN, return true.
Examples
Using isNaN
Number.isNaN(NaN); // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0); // true
// e.g. these would have been true with global isNaN()
Number.isNaN('NaN'); // false
Number.isNaN(undefined); // false
Number.isNaN({}); // false
Number.isNaN('blabla'); // false
// These all return false
Number.isNaN(true);
Number.isNaN(null);
Number.isNaN(37);
Number.isNaN('37');
Number.isNaN('37.37');
Number.isNaN('');
Number.isNaN(' ');
Polyfill
The following works because NaN is the only value in JavaScript which is not equal to itself.
Number.isNaN = Number.isNaN || function isNaN(input) {
return typeof input === 'number' && input !== input;
}
Specifications
| Specification |
|---|
| ECMAScript (ECMA-262)The definition of 'Number.isnan' in that specification. |
Browser compatibility
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
isNaN
|
Chrome
Full support 25 |
Edge
Full support 12 |
Firefox
Full support 15 |
IE
No support No |
Opera
Full support 15 |
Safari
Full support 9 |
WebView Android
Full support ≤37 |
Chrome Android
Full support 25 |
Firefox Android
Full support 15 |
Opera Android
Full support 14 |
Safari iOS
Full support 9 |
Samsung Internet Android
Full support 1.5 |
nodejs
Full support 0.10 |
Legend
- Full support
- Full support
- No support
- No support
See also
Number.isNaN() by Mozilla Contributors is licensed under CC-BY-SA 2.5.