値が有限でかつ数値型であるかどうかを調べる(Number.isFinite)

Number オブジェクトの静的メソッドである Number.isFinite は、対象の値が有限かつ値が数値型かどうかを調べ、 true または false を返します。ここでは Number オブジェクトの Number.isFinite メソッドの使い方について解説します。

(Last modified: )

値が有限かつ数値型がどうかを調べる(isFinite)

Number オブジェクトの Number.isFinite メソッドは、対象の値が有限かつデータ型が数値型かどうかを調べて true または false を返します。書式は次の通りです。

Number.isFinite(値)

引数に指定した値が有限の値かどうかを調べます。値が NaN 、正の無限大( Infinity )、負の無限大( -Infinity )であれば false 、それ以外は true を返します。値が数値型ではない場合はすべて false となります。

次のサンプルをみてください。値が NaN 、正の無限大( Infinity )、負の無限大( -Infinity )の場合は false となります。

Number.isFinite(Infinity);
>> false

Number.isFinite(-Infinity);
>> false

Number.isFinite(NaN);
>> false

無限大ではない数値は有限数です。

Number.isFinite(442);
>> true

Number.isFinite(0);
>> true

Number.isFinite(-1.225e-3);
>> true

値が数値型でない場合はすべて false となります。

Number.isFinite('78');
>> false

Number.isFinite(true);
>> false

Number.isFinite(undefined);
>> false

Number.isFinite([10, 20]);
>> false

isFinite関数とNumber.isFiniteメソッドの違い

グローバル関数の isFinite 関数と、 Number オブジェクトの Number.isFinite メソッドはどちらも対象の値が有限かどうかを調べるのに使いますが、 isFinite 関数が引数が数値型でなかった場合に数値型に変換してから有限かどうか判定するのに対して、 Number.isFinite メソッドは引数が数値型でなかった場合はすべて false とする点が異なります。

次のサンプルをみてください。

isFinite(128);
>> true
Number.isFinite(128);
>> true

isFinite(Infinity);
>> false
Number.isFinite(Infinity);
>> false

isFinite('78');
>> true
Number.isFinite('78');
>> false

isFinite('');
>> true
Number.isFinite('');
>> false

isFinite(true);
>> true
Number.isFinite(true);
>> false

isFinite(null);
>> true
Number.isFinite(null);
>> false

isFinite([10]);
>> true
Number.isFinite([10]);
>> false

有限の数値はいずれでも true 、無限の値を表す Infinity はいずれでも false となりますが、グローバル関数の isFinite メソッドではそれ以外の値でも true となる場合があります。厳密に数値型の有限の値かどうかを判別するには Number.isFinite メソッドを使用してください。

※ グローバル関数の isFinite 関数については「isFinite関数(値が有限か無限かを調べる)」を参照されてください。

-- --

Number オブジェクトの Number.isFinite メソッドの使い方について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。