H

文字(String)とNaNを見分ける方法【JavaScript】

 文字(String)とNaNを見分ける必要があったので備忘録。
 
 NaNを検出する方法として、isNaN()を使うことが挙げられる。しかしこの方法はほぼほぼNumber型にしか使われない。何故ならisNaN()はundefined,、連想配列、そしてString型の場合、ほぼ100%で(数値に変換可能な場合を除く)trueを返す。

これは公式のドキュメントにも書いてある。
developer.mozilla.org

そこでtypeofを使うことを推奨する。
なんと、NaNはNot A Numberであるのに、number型に分類される。これを利用すれば、例えば以下のようなコードでStringとNaNを見分けられる。

//Nは任意の値
if(typeof(N) == 'number'){
  console.log('NaN');
}

なおこの方法は、値の型がぐちゃぐちゃになる場合はおすすめできないかもしれない。
最もtypeof()=='number'のような条件の後にisNaN()を組み込む方法もあるけど。