JavaScriptで数値が有限数かどうかを判定する必要がある場合、`Number.isFinite()`メソッドを使用すると簡単に判定できます。このメソッドは、引数として渡された値が有限数である場合にtrueを、それ以外の場合にfalseを返します。

Number.isFinite()の基本的な使い方

Number.isFinite(100);     // true
Number.isFinite(0);       // true
Number.isFinite(-50.5);   // true
Number.isFinite(Infinity);  // false
Number.isFinite(-Infinity); // false
Number.isFinite(NaN);     // false

グローバルisFinite()との違い

JavaScriptには`isFinite()`というグローバル関数も存在しますが、`Number.isFinite()`とは動作が異なります。主な違いは、値の型変換を行うかどうかです。

// グローバルisFinite()は型変換を行う
isFinite("123");        // true
isFinite("hello");      // false
isFinite(null);         // true

// Number.isFinite()は型変換を行わない
Number.isFinite("123"); // false
Number.isFinite("hello"); // false
Number.isFinite(null);  // false

実践的な使用例

function validateNumericInput(value) {
  if (!Number.isFinite(value)) {
    throw new Error('入力値は有限数である必要があります');
  }
  return value;
}

// 使用例
try {
  console.log(validateNumericInput(100));   // 100
  console.log(validateNumericInput(Infinity)); // エラー
} catch (e) {
  console.error(e.message);
}

注意点

1. `Number.isFinite()`は数値型以外の値に対して常に`false`を返します

2. 文字列や他の型を数値として判定したい場合は、事前に`Number()`で型変換する必要があります

3. IE11以前のブラウザでは`Number.isFinite()`がサポートされていないため、ポリフィルが必要な場合があります

ポリフィル

古いブラウザをサポートする必要がある場合は、以下のポリフィルを使用できます:

if (Number.isFinite === undefined) {
  Number.isFinite = function(value) {
    return typeof value === 'number' && isFinite(value);
  };
}

まとめ

`Number.isFinite()`は、JavaScriptで数値が有限数かどうかを厳密に判定するための便利なメソッドです。特に:

  • 数値の検証が必要な場合
  • 計算結果が有効な範囲内かどうかの確認
  • 入力値のバリデーション

などの場面で活用できます。ただし、型変換が必要な場合は、グローバルの`isFinite()`を使用するか、事前に型変換を行う必要があることに注意してください。