How do you test for NaN in JavaScript?

javascript, nan

Solution

The question has the answer if you read closely enough. That is the way I found it: I was typing out the question and... bingo.

You remember when I wrote "`NaN` is like NULL in SQL, it is not equal to anything, even itself"? So far as I know, `NaN` is the only value in Javascript with this property. Therefore you can write:

var reallyIsNaN = function(x) {
   return x !== x;
};

Problem

I have a variable x and I want to test if x is set to NaN. How do I do that? My first instinct is probably to, you know, test it, like this: ``` if (x === NaN) { ... ``` Silly rabbit, no, that would be far too easy. NaN is like NULL in SQL, it is not equal to anything, even itself. But look, there is a function called `isNaN()` -- maybe that will do it! No, so far as I can tell, `isNaN()` is utterly worthless. For example, `isNaN([""])` properly returns false, but `isNaN(["."])` returns true. You don't want do know how I learned about this flaw. How do I do this? Turns out, my question is a duplicate of this one, but the selected answer is wrong. The right answer has 20% as many upvotes.

Original source

Related problems