こんにちわ、夏野菜ではナスが一番好きなゆずのすけです。
ナスを揚げ焼きしてかつお節とポン酢で食べる!それだけで十分すぎる旨さ最高ですね。
今回はJavaScriptで、数値をチェックする方法をまとめました。
JavaScriptの数値チェックをする関数は全部で5種類あります。
それぞれ大きくグローバルオブジェクトとNumberオブジェクトにわける事ができます。
JavaScriptの数値チェック関数の種類
グローバルオブジェクト
isNaN(引数)
isFinte(引数)Numberオブジェクト
Number.isNuN(引数)
Number.isFinte(引数)
Number.inInteger(引数)
それぞれどんな風に使い分ければいいのかを、説明していきます。
目次
テーブルで見る、JavaScript数値チェック
今回は、忙しい方用に表でまとめてみました。
判定がどうなるかだけ知りたい方は、こちらをご覧下さい。
関数 | isNaN() | isFinite() | Number.isNaN() | Number.isFinite() | Number.isInteger() |
-1 | false | true | false | true | true |
0 | false | true | false | true | true |
1 | false | true | false | true | true |
‘0’ | false | true | false | false | false |
‘1’ | false | true | false | false | false |
’12’ | false | true | false | false | false |
0.1 | false | true | false | true | false |
true | false | true | false | false | false |
false | false | true | false | false | false |
underfind | true | false | false | false | false |
null | false | true | false | false | false |
NaN | true | false | true | false | false |
数値チェック関数について
JavaScriptに置いて数値チェックする関数は5つあるとお伝えしました。
それぞれ少しずつ仕様が異なっていますが、全部を使う必要はありません。
結論:小数を使うならNumber.isFinite()を使い、小数を使わないならNumber.isInteger()を使う
いきなりですが、結論これでOKです。
整数だけなら、Number.isInteger()使っておけば間違いないでしょう。
解説:isNaN()
isNaN()は引数が、非数であるかどうかの判定をします。
つまり、数値でなければtrueを出すのですが、’0’や’1’に対しても0や1と変換してしまう為、false判定になります。
数値でなければ、強制的に数値に変換しようとしてしまうのです。
このような仕様を許容しない場合、使用するべきではありません。
解説:isFinite()
isFinite()は引数が、有限数かどうかを判定します。
つまり、isNaN()の逆で数値であればtrueを出すのです。
しかし、このisFinite()にも強制的な数値変換が起こりますので、許容できない場合にはこちらも使用を控えましょう。
解説:Number.isNaN()
Number.isNaN()は、引数がNaNであるかを判定します。
NaNとは、Not A Numberの略で数値ではない事を表す特別な値です。
NaNである事を確認した上で、さらにデータの型がNumberである場合にtrueを出すかなり堅牢な判定と言えるでしょう。
また、強制変換をしない事もisNaN()と異なる点です。
解説:Number.isFinite()
Number.isFinite()は、引数が有限数であるかを判定します。
上記Number.isNaN()と同じく強制的な変換も行いません。
数値かどうかの判定をするなら、かなり信頼できると思います。
また、小数の判定もできます。
解説:Number.isInteger()
Number.isInteger()は、引数が整数であるかどうかを判定します。
ほぼ、Number.isFinite()と同じですが、こちらは小数をfalseと判定します。
まとめ
いかがですか?
JavaScriptで数値のチェックをする方法がお分かりいただけたのではないでしょうか?
基本的には、Number.isFinite()とNumber.isInteger()だけを使えば事足りそうですね!
この記事があなたの役に立てば幸いです。