記事の内容
この記事では、JavaScriptで数値を判定する方法を説明します。
isNaN、Number.isNaN、isFinite、Number.isFinite、Number.isInteger、正規表現を使います。
JavaScriptのコードは、ES6で書いています。
isNaN(is Not a Number)
isNaN()関数は引数が 、NaN (Not a Number)かどうかを判定します。
下記のコード例では、数字、数字の文字列、16進数などの動作を確認しています。
isNaN関数の動作は、数値ではない引数における動作がわかりづらいです。
なぜならば、isNaN関数の引数が数値型ではない場合、その値はまず数字へと型強制されるからです。
その結果の値に対して、NaNかどうかを判定します。
このようにして、数値型に型強制される際に結果がNaN ではない数値となる非数値に対しては、予想外なことに "false" が返されます。
型強制されると0や1の値になる「空文字列」「真偽値」「プリミティブ」などは使用する時に気をつける必要があります。
Number.isNaN
この関数は、型強制が行われません。
isFinite
有限数かどうかを判定します。
この関数は、暗黙の型変換が行われます。
Number.isFinite
有限数かどうかを判定します。
暗黙の型変換が行われません。
Number.isInteger
値が整数かどうかを判定します。
正規表現
正規表現で数値を判断することもできます。
まとめ
この記事を読んだところで、どの関数を使えばいいのか迷うかもしれません。
簡単な指針を書くので、参考にして下さい。
- 文字列の数字を判断したいなら、正規表現
- 少数を許容するなら、Number.isFinite()
- 整数なら、Number.isInteger()
Good luck with your engineer life!