JavaScript isNaNについて注意点

isNaN は引数が非数であるかをチェックして、非数ならtrueを返す関数です。

ただ、以下の結果はすべて false になります。

isNaN('') // false
isNaN(false) // false
isNaN(true) // false

空文字もbooleanも非数なので true になりそうですが。。

実は isNaN の引数が数値型ではない場合は、先に数値に変換されます。

空文字は0、falseは0、trueは1に変換されます。

これは数値型なので、isNaN の結果は false になるわけです。

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/isNaN