isFinite関数
関数 isFinite は、パラメータが有限の数値であるか(つまり、文字列、配列などではなく、プラスまたはマイナスの無限大でもないか)をチェックします。
この関数の動作:数値がプラスまたはマイナスの無限大(つまり Infinity)または数値ではない(つまり NaN)場合、false を返し、それ以外の場合は true を返します。
つまり、文字列、配列などは NaN に変換され、したがって false を返します。
ただし、例外があります:空の文字列 '' は true を返し、空白文字列 ' ' も true を返します。null は true を返し、値 true と false に対しても true が返されます。
これは、これらの値が NaN ではなく数値に変換されるためです。
空白文字列、論理値、特殊な値を数値と見なさない、本当に正確な数値チェックが必要な場合は、次の関数 isNumeric を使用してください:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
この関数がどのように動作するかを見てみましょう。
関数 isFinite はパラメータを数値に変換し、それが Infinity、-Infinity、NaN でない場合に true を返します。
したがって、右側の部分は明らかに数値でないものを除外しますが、true、false、null、空の文字列 ''、空白文字列などの値は残ります。これらは正しく数値に変換されるためです。
これらの値を除外するには、関数 parseFloat が必要です。この関数は true、false、null、''、' ' に対して NaN を返します。関数 parseFloat はこのように動作します:パラメータを文字列に変換します。つまり、true、false、null は 'true'、'false'、'null' になり、次にそこから数値を読み取ります。このとき、空の文字列と空白文字列は NaN になります。次に、parseFloat の結果は、!isNaN を使用して処理され、NaN の代わりに true または false が得られます。
結果として、数値文字列と通常の数値以外のすべてが除外されます。
構文
isFinite(値);
例
パラメータが数値であるため、ここで isFinite は true を出力します:
let num = 3;
console.log(isFinite(num));
コード実行結果:
true
例
パラメータが数値でないため、ここで isFinite は false を出力します:
let num = 'abcde';
console.log(isFinite(num));
コード実行結果:
false
例
パラメータが無限大であるため、ここで isFinite は false を出力します:
let num = Infinity;
console.log(isFinite(num));
コード実行結果:
false
例
1/0 は本質的に Infinity(無限大)であるため、ここで isFinite は false を出力します:
let num = 1 / 0;
console.log(isFinite(num));
コード実行結果:
false
例
空の文字列は数値ではありませんが例外であるため、ここで isFinite は true を出力します:
let num = '';
console.log(isFinite(num));
コード実行結果:
true