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()`

.

Number.isNaN(value)

`value`

- The value to be tested for
`NaN`

.

**true** if the given value is `NaN`

and its type is `Number`

; otherwise, **false**.

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`

.

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(' ');

The following works because NaN is the only value in javascript which is not equal to itself.

Number.isNaN = Number.isNaN || function(value) { return value !== value; }

Specification | Status | Comment |
---|---|---|

ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Number.isnan' in that specification. | Standard | Initial definition. |

ECMAScript Latest Draft (ECMA-262) The definition of 'Number.isnan' in that specification. | Draft |

Desktop | ||||||
---|---|---|---|---|---|---|

Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |

Basic support | 25 | Yes | 15 | No | Yes | 9 |

Mobile | |||||||
---|---|---|---|---|---|---|---|

Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |

Basic support | Yes | Yes | Yes | 15 | Yes | 9 | Yes |

Server | |
---|---|

Node.js | |

Basic support | 0.10 |

© 2005–2018 Mozilla Developer Network and individual contributors.

Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN