JavaScriptでNaNはNaNと比較してもfalseが返ってくるので、値がNaNかどうか評価するのが難しい時があります。
console.log(NaN == NaN); // => false console.log(NaN === NaN); // => false
そんなときに役に立つのが isNaN と Number.isNaN です。
isNaN
引数がNumber型にキャストした際にNaNになる値であればtrue、それ以外であればfalseを返します。
console.log(isNaN(0)); // => false console.log(isNaN("0")); // => false console.log(isNaN(NaN)); // => true console.log(isNaN("NaN")); // => true console.log(isNaN("")); // => false console.log(isNaN({})); // => true console.log(isNaN([])); // => false
Number.isNaN
引数がNaNであればtrue、それ以外であればfalseを返します。
ただし現在は、Chrome、Firefoxでしかサポートされてません。
console.log(Number.isNaN(0)); // => false console.log(Number.isNaN("0")); // => false console.log(Number.isNaN(NaN)); // => true console.log(Number.isNaN("NaN")); // => false console.log(Number.isNaN("")); // => false console.log(Number.isNaN({})); // => false console.log(Number.isNaN([])); // => false