JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptのisFinite()関数とは?使い方と実行例をわかりやすく解説

isFinite()関数は、引数として渡された値が有限の数値(finite number)であるかどうかを判定するための組み込み関数です。判定した結果、値が有限数であれば true を返し、無限大(Infinity)や NaN などの有限数でない値であれば false を返します。

なお、この関数はグローバル関数として直接呼び出せるほか、Number.isFinite() の形式で Number オブジェクトからも呼び出すことが可能です。両者には型変換の扱いに違いがある点に注意しましょう。

構文

isFinite()関数の基本的な構文は以下のとおりです。

isFinite(5655);

引数には判定対象となる値を指定します。文字列など数値以外の値を渡した場合、グローバル関数版の isFinite() は自動的に数値へ変換してから判定を行います。

使用例

次のコードでは、Math.min()Number.isFinite()Math.max() の各戻り値に対して有限数の判定を行っています。

<html>
<head>
   <title>JavaScript Example</title>
</head>
<body>
   <script type="text/javascript">
      var result1 = Math.min();
      document.write(isFinite(result1));
      document.write("<br>");
      var result2 = Number.isFinite(100/0);
      document.write(result2);
      document.write("<br>");
      var result3 = Math.max(25, 36, 862);
      document.write(isFinite(result3));
   </script>
</body>
</html>

実行結果

false
false
true

結果の解説

  • 1つ目(false): 引数なしで呼び出された Math.min()Infinity を返します。Infinity は有限数ではないため、isFinite()false を返します。
  • 2つ目(false): 100/0 の計算結果は Infinity になるため、Number.isFinite()false を返します。
  • 3つ目(true): Math.max(25, 36, 862) の最大値は 862 であり、これは有限の数値なので true が返されます。

isFinite() と Number.isFinite() の違い

グローバル関数の isFinite() は、引数をまず数値に変換してから判定します。そのため isFinite("10") のように文字列を渡しても true が返ります。一方、ES6で追加された Number.isFinite() は型変換を行わず、引数が数値型かつ有限数である場合のみ true を返します。厳密な判定が必要な場面では Number.isFinite() の利用が推奨されます。

  1. JavaScriptの関数プロトタイプとは?仕組みと使い方を解説

    JavaScriptで作成されたすべての関数には、JavaScriptエンジンによって自動的にprototypeプロパティが追加されます。このprototypeプロパティはオブジェクトであり、デフォルトではconstructorプロパティを含んでいます。関数のプロトタイプには、以下のようにしてアクセスできます。functionName.prototypeコンストラクタ関数を使ってオブジェクトを生成する場合、このprototypeプロパティを活用することで、同じコンストラクタから作成された複数のオブジェクト間でメソッドやプロパティを効率的に共有することができます。これにより、各インスタンスごとに

  2. JavaScriptでのメソッド借用:call()・apply()・bind()の使い方を解説

    JavaScriptでは、call()、apply()、bind()という3つのメソッドを使うことで、あるオブジェクトが持つメソッドを別のオブジェクトが「借用」できます。これは、本来そのメソッドを持たないオブジェクトに対して、thisの参照先を差し替えてメソッドを実行できる便利なテクニックです。 3つのメソッドの違い call():引数をカンマ区切りで個別に渡し、即座に関数を実行します。 apply():引数を配列(または配列風オブジェクト)として渡し、即座に関数を実行します。 bind():thisを固定した新しい関数を返すだけで、即座には実行されません。返された関数は後から好きなタイミン