isFinite関数

関数 isFinite は、パラメータが有限の数値であるか(つまり、文字列、配列などではなく、プラスまたはマイナスの無限大でもないか)をチェックします。

この関数の動作:数値がプラスまたはマイナスの無限大(つまり Infinity)または数値ではない(つまり NaN)場合、false を返し、それ以外の場合は true を返します。 つまり、文字列、配列などは NaN に変換され、したがって false を返します。

ただし、例外があります:空の文字列 '' は true を返し、空白文字列 ' ' も true を返します。null は true を返し、値 true と false に対しても true が返されます。

これは、これらの値が NaN ではなく数値に変換されるためです。 空白文字列、論理値、特殊な値を数値と見なさない、本当に正確な数値チェックが必要な場合は、次の関数 isNumeric を使用してください:

javascriptfunction isNumeric(num) {
  return !isNaN(parseFloat(num)) && isFinite(num);
};

この関数がどのように動作するかを見てみましょう。 関数 isFinite はパラメータを数値に変換し、それが Infinity、-Infinity、NaN でない場合に true を返します。 したがって、右側の部分は明らかに数値でないものを除外しますが、true、false、null、空の文字列 ''、空白文字列などの値は残ります。これらは正しく数値に変換されるためです。

これらの値を除外するには、関数 parseFloat が必要です。この関数は true、false、null、''、' ' に対して NaN を返します。関数 parseFloat はこのように動作します:パラメータを文字列に変換します。つまり、true、false、null は 'true'、'false'、'null' になり、次にそこから数値を読み取ります。このとき、空の文字列と空白文字列は NaN になります。次に、parseFloat の結果は、!isNaN を使用して処理され、NaN の代わりに true または false が得られます。 結果として、数値文字列と通常の数値以外のすべてが除外されます。

構文

javascriptisFinite(値);

例

パラメータが数値であるため、ここで isFinite は true を出力します:

javascriptlet num = 3;
console.log(isFinite(num));

コード実行結果:

javascripttrue

例

パラメータが数値でないため、ここで isFinite は false を出力します:

javascriptlet num = 'abcde';
console.log(isFinite(num));

コード実行結果:

javascriptfalse

例

パラメータが無限大であるため、ここで isFinite は false を出力します:

javascriptlet num = Infinity;
console.log(isFinite(num));

コード実行結果:

javascriptfalse

例

1/0 は本質的に Infinity(無限大)であるため、ここで isFinite は false を出力します:

javascriptlet num = 1 / 0;
console.log(isFinite(num));

コード実行結果:

javascriptfalse

例

空の文字列は数値ではありませんが例外であるため、ここで isFinite は true を出力します:

javascriptlet num = '';
console.log(isFinite(num));

コード実行結果:

javascripttrue

関連項目

  • isNaN 関数、
    NaN をチェックします
  • typeof 演算子、
    データ型を決定します