JavaScript: How to check if an object is NaN

Updated . Posted . Visible to the public.

JavaScript's NaN ("Not a Number") is hard to compare against. It never equals anything, not even itself:

NaN === NaN;        // false
Number.NaN === NaN; // false

There is the isNaN method, but it is not really what you are looking for:

isNaN(NaN)     // true
isNaN('hello') // true

Option 1: ES6

The Object.is() method determines whether two values are the same value. It even works for NaN:

Object.is(NaN, NaN) // true

Option 2: ES5

The example above shows that simply using isNaN would match other objects, too. However, look at the weird type of "Not a Number":

typeof NaN // "number"

Hence we can actually check against NaN like this:

var something = NaN;
typeof something === 'number' && isNaN(something) // true

Wow.

Profile picture of Arne Hartherz
Arne Hartherz
Last edit
Johanna Schalk
License
Source code in this card is licensed under the MIT License.
Posted by Arne Hartherz to makandra dev (2014-10-31 16:50)