javascript NaNの判定

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