JavaScript - 数値判定で一番使えるのはisNaN()?isFinite()?

JavaScriptで数値判定する場合に、isNaN()やisFinite()を使っている方が多いと思います。

さらにES2015では、NumberオブジェクトのメソッドとしてisNaN()、isFinite()が追加されました。

これら4つを比較して、どれが一番使えそうかを検証してみます。

検証する値

比較的使用頻度が高いと思われる、次の値を引数として与えます。

種類
123数値
'123'文字列
0.58数値
'0.58'文字列
true真偽値
false真偽値
nullnull
undefinedundefined
'abc'文字列

4つのメソッドを比較検証してみる

上記の値を引数として与えた結果は次の通りです。

isFinite()Number.isFinite()isNaN()Number.isNaN()
123truetruefalsefalse
'123'truefalsefalsefalse
0.58truetruefalsefalse
'0.58'truefalsefalsefalse
truetruefalsefalsefalse
falsetruefalsefalsefalse
nulltruefalsefalsefalse
undefinedfalsefalsetruefalse
'abc'falsefalsetruefalse

結果を見る限り、数値判定に一番使えそうなのは、 Number.isFinite()のようです。

'123'や'0.58'は数値に変換されずに「false」となりますが、 真偽値のtrue/false、nullやundefinedも「false」となります。

一方で、Number.isNaN()は全く使えません。 一番下の'abc'の戻り値が「false」となっています。

今後どのメソッドを使うか悩んでいる方には「Number.isFinite()」をおすすめします。

まとめ

・ES2015以降で、数値判定に一番使えるメソッドはどれかを検証してみました。

・一番使えるのは Number.isFinite()メソッドです。

・グローバルオブジェクトのisFinite()、isNaN()メソッドも真偽値やnullに気をつければ使えます。

・Number.isNaN()メソッドは全く使えません。