JavaScript - 数値判定で一番使えるのはisNaN()?isFinite()?
JavaScriptで数値判定する場合に、isNaN()やisFinite()を使っている方が多いと思います。
さらにES2015では、NumberオブジェクトのメソッドとしてisNaN()、isFinite()が追加されました。
これら4つを比較して、どれが一番使えそうかを検証してみます。
検証する値
比較的使用頻度が高いと思われる、次の値を引数として与えます。
値 | 種類 |
---|---|
123 | 数値 |
'123' | 文字列 |
0.58 | 数値 |
'0.58' | 文字列 |
true | 真偽値 |
false | 真偽値 |
null | null |
undefined | undefined |
'abc' | 文字列 |
4つのメソッドを比較検証してみる
上記の値を引数として与えた結果は次の通りです。
値 | isFinite() | Number.isFinite() | isNaN() | Number.isNaN() |
---|---|---|---|---|
123 | true | true | false | false |
'123' | true | false | false | false |
0.58 | true | true | false | false |
'0.58' | true | false | false | false |
true | true | false | false | false |
false | true | false | false | false |
null | true | false | false | false |
undefined | false | false | true | false |
'abc' | false | false | true | false |
結果を見る限り、数値判定に一番使えそうなのは、 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()メソッドは全く使えません。