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.
Posted by Arne Hartherz to makandra dev (2014-10-31 16:50)