Posted almost 7 years ago. Visible to the public.

JavaScript: How to check if an object is NaN

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

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

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

Copy
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:

Copy
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":

Copy
typeof NaN // "number"

Hence we can actually check against NaN like this:

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

Wow.

Your development team has a full backlog of feature requests, chores and refactoring coupled with deadlines? We are familiar with that. With our "DevOps as a Service" offering, we support developer teams with infrastructure and operations expertise.

Owner of this card:

Avatar
Arne Hartherz
Last edit:
almost 2 years ago
by Johanna Hartmann
About this deck:
We are makandra and do test-driven, agile Ruby on Rails software development.
License for source code
Posted by Arne Hartherz to makandra dev
This website uses short-lived cookies to improve usability.
Accept or learn more