JavaScript Infinity

概要: このチュートリアルでは、JavaScriptのInfinityとその機能について学びます。

JavaScript Infinity の概要

Infinity は、グローバルオブジェクトのプロパティです。言い換えれば、グローバル変数です。

Infinity の初期値は Number.POSITIVE_INFINITY で、他の有限数よりも大きいです。

JavaScriptには負の Infinity (-Infinity) もあり、その値は Number.NEGATIVE_INFINITY です。-Infinity は、すべての有限数よりも小さいです。

Infinity の型は number です。

const result = typeof (Infinity);

console.log(result); // numberCode language: JavaScript (javascript)

Infinity のチェック

JavaScriptには、値が有限であるかどうかをチェックする Number.isFinite() が用意されています。

Number.isFinite(value);Code language: JavaScript (javascript)

value が有限の場合、true を返します。 value が無限の場合、Number.isFinite()false を返します。

console.log(Number.isFinite(100)); // true
console.log(Number.isFinite(Infinity)); // false
console.log(Number.isFinite(-Infinity)); // falseCode language: JavaScript (javascript)

また、値と Infinity を比較することもできます。例えば、次のようになります。

let counter = 100;
console.log(counter === Infinity); // falseCode language: JavaScript (javascript)

無限数は別の無限数と等しくなります。

console.log(Infinity === Infinity); // trueCode language: JavaScript (javascript)

Infinity の落とし穴

1) parseFloat() 関数

ユーザー情報を収集するフォームがあるとします。フォームには、ユーザーが体重を入力できるフィールドがあります。

フォームフィールドの値は文字列であるため、数値に変換する必要があります。

let weight = parseInt('120kg');
console.log(weight); // 120Code language: JavaScript (javascript)

これは正常に機能します。ユーザーが数値に変換できない文字列を入力した場合、parseInt()NaN を返します。

let weight = parseInt('More than 100kg');
console.log(weight); // NaNCode language: JavaScript (javascript)

入力文字列が Infinity の場合、parseInt() は無限数を認識しないため、NaN も返します。

let weight = parseInt('Infinity');
console.log(weight); // NaNCode language: JavaScript (javascript)

しかし、次のように parseFloat() 関数を使用すると

let weight = parseFloat('Infinity');
console.log(weight); // InfinityCode language: JavaScript (javascript)

parseFloat() 関数は Infinity を認識し、無限数を返します。

そのため、入力フィールドに 'Infinity' という文字列が含まれている場合は、検証エラーを出すのが良い習慣です。

2) JSON シリアル化

JSON.stringify() は、無限数を null にシリアル化します。例:

const resource = {
    amount: Infinity
};
let result = JSON.stringify(resource);

console.log(result);Code language: JavaScript (javascript)

出力

{"amount":null}Code language: JSON / JSON with Comments (json)

3) Math メソッド

一部の Math 関数は無限数を返します。

次の Math.min() メソッドは、ratings 配列内の最小の数を返します。

let ratings = [1, 2, 3, 4, 5];

let max = Math.min(...ratings);
console.log(max); // 1Code language: JavaScript (javascript)

ただし、ratings 配列が空の場合、Math.min() メソッドは Infinity を返します。

let ratings = [1, 2, 3, 4, 5];

// 
somewhere in the code 
ratings = []; // empty array
//

let max = Math.min(...ratings);
console.log(max); // InfinityCode language: JavaScript (javascript)

まとめ

  • Infinity は無限数を表します。これはグローバル変数であり、その値は Infinity です。
  • Infinity はすべての有限数よりも大きく、-Infinity はすべての有限数よりも小さいです。
  • parseFloat('Infinity')Infinity を返します。
このチュートリアルは役に立ちましたか?