概要: このチュートリアルでは、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を返します。