isFinite() - JavaScriptで数値の有限性確認!isFinite()関数入門

投稿日 2025年02月07日   更新日 2025年02月07日

JavaScriptで数値が有限であるかどうかを確認したい場合、`isFinite()`関数を使用します。この記事では、`isFinite()`関数の使い方と実践的な例を詳しく解説します。

isFinite()関数の基本

`isFinite()`は、引数として与えられた値が有限数値であるかどうかを判定し、結果を真偽値(boolean)で返す関数です。
isFinite(123);      // true
isFinite(-456);     // true
isFinite(0);        // true
isFinite(Infinity); // false
isFinite(-Infinity);// false
isFinite(NaN);      // false

使用例と戻り値

`isFinite()`関数は以下のような結果を返します:
  • 有限の数値の場合:`true`
  • 無限大(Infinity)の場合:`false`
  • 数値以外の値の場合:引数を数値に変換して判定
// 数値の例
isFinite(100.5);    // true
isFinite(-50);      // true

// 文字列の例(数値に変換可能な場合)
isFinite("123");    // true
isFinite("-456.7"); // true

// 無効な値の例
isFinite("abc");    // false
isFinite("");       // true(空文字は0に変換される)
isFinite(null);     // true(nullは0に変換される)

よくあるユースケース

1. 計算結果の妥当性チェック

function divide(a, b) {
    const result = a / b;
    if (!isFinite(result)) {
        return "計算結果が無効です";
    }
    return result;
}

console.log(divide(10, 2));  // 5
console.log(divide(10, 0));  // "計算結果が無効です"

2. ユーザー入力の検証

function validateInput(value) {
    if (!isFinite(value)) {
        return "有効な数値を入力してください";
    }
    return "入力値は有効です";
}

console.log(validateInput("123")); // "入力値は有効です"
console.log(validateInput("abc")); // "有効な数値を入力してください"

Number.isFinite()との違い

ES6で導入された`Number.isFinite()`は、`isFinite()`のより厳密なバージョンです:
// グローバルisFinite()
isFinite("123");        // true(文字列を数値に変換)
isFinite(null);         // true(nullを0に変換)

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

実践的なTips

エラーハンドリング

function safeCalculation(value) {
    try {
        const result = complexMathOperation(value);
        return isFinite(result) ? result : "計算エラー";
    } catch (error) {
        return "エラーが発生しました";
    }
}

配列の要素チェック

function validateNumbers(arr) {
    return arr.every(num => isFinite(num));
}

console.log(validateNumbers([1, 2, 3]));     // true
console.log(validateNumbers([1, "abc", 3])); // false

まとめ

  • `isFinite()`は値が有限数値かどうかを判定する
  • 引数は自動的に数値に変換される
  • `Number.isFinite()`はより厳密な判定を行う
  • 計算結果の妥当性チェックやユーザー入力の検証に有用
これらの知識を活用することで、より堅牢なJavaScriptアプリケーションを開発することができます。
Resumy AI監修者
監修者: RESUMY.AI編集部

ヨーロッパのテックハブであるロンドンにて、シニアデベロッパーとしてチームを率いた後、オンライン教育プラットフォームUdemyでモダン技術に関する講義を配信する「Daiz Academy」を設立。現在はAIテクノロジー企業 Chott, Inc.を運営しています。

監修者: RESUMY.AI編集部
Resumy AI監修者

ヨーロッパのテックハブであるロンドンにて、シニアデベロッパーとしてチームを率いた後、オンライン教育プラットフォームUdemyでモダン技術に関する講義を配信する「Daiz Academy」を設立。現在はAIテクノロジー企業 Chott, Inc.を運営しています。

AI職務経歴書作成サービス RESUMY.AIAI職務経歴書作成サービス RESUMY.AI
60秒で完了