Web/JavaScript/Reference/Global objects/Number/isNaN

From Get docs


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


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

Update compatibility data on GitHub

Desktop Mobile Server
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet Node.js
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