is_NaN()という関数があるらしいのですが、正しく判定されないみたいなので注意が必要です。 isNaN()はNaNであるかの判定ではなく、引数が数値へ変換可能かどうかの判定に使われるみたいです。このため以下のような、判定が起きてしまいます。。。
isNaN(NaN); // true isNaN("foo"); // true isNaN(undefined); // true isNaN({}); // true isNaN({ valueOf: "foo" }); // true
これを防ぎ、ちゃんとNaNであるかチェックしたいときは、Number.isNaN()を使ってあげると良いです。
Number.isNaN(NaN); // true Number.isNaN('NaN'); // false