判定方法: 1. "value%1===0" ステートメントを使用する; 2. "Math.floor(value)===value" ステートメントを使用する; 3. "parseInt(value, 10) === value" ステートメント; 4. "(value|0)=== value" ステートメントを使用します; 5. "Number.isInteger(value)" ステートメントを使用します。
このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。
JavaScript は整数と浮動小数点数を区別しません。すべての数値は内部的に Java の double 型と同じ 64 ビット浮動小数点形式で表されます。ただし、配列のインデックス付けやビット演算などの実際の演算は 32 ビット整数に基づいています。では、整数型(Integer)かどうかはどうやって判断するのでしょうか?
方法 1. 剰余演算子を使用して、任意の整数が 1 で割り切れる、つまり剰余が 0 であることを決定します。このルールを使用して、整数かどうかを判断します。
function isInteger(obj) { return obj%1 === 0 } isInteger(3) // true isInteger(3.3) // false
isInteger('') // true isInteger('3') // true isInteger(true) // true isInteger([]) // true
function isInteger(obj) { return typeof obj === 'number' && obj%1 === 0 } isInteger('') // false isInteger('3') // false isInteger(true) // false isInteger([]) // false
さて、こんな感じで比較的完璧です。
方法 2. Math.floor を使用して、整数が四捨五入後もそれ自体と等しいかどうかを判断します。以下に示す Math.floor の例では、この機能を使用して、文字列 true、[] を直接マスクし、コードの量は前の関数よりも少なくなります。parseInt から判断すると、メソッド 3 は非常に優れています。function isInteger(obj) {
return Math.floor(obj) === obj
}
isInteger(3) // true
isInteger(3.3) // false
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false
function isInteger(obj) { return parseInt(obj, 10) === obj } isInteger(3) // true isInteger(3.3) // false isInteger('') // false isInteger('3') // false isInteger(true) // false isInteger([]) // false
実際には false が返されるため、不合理です。 。その理由は、parseInt が整数を解析する前に最初の引数を強制的に文字列に解析するためです。数値を整数に変換するこの方法は、良い選択ではありません。
方法 4. ビット演算による判定isInteger(1000000000000000000000) // false
function isInteger(obj) { return (obj | 0) === obj } isInteger(3) // true isInteger(3.3) // false isInteger('') // false isInteger('3') // false isInteger(true) // false isInteger([]) // false
のような 32 ビットを超える数値については何もできません。もちろん、ほとんどの場合は使用しません。このような大きな数です。
方法 5. ES6 は Number.isInteger を提供しますisInteger(Math.pow(2, 32)) // 32位以上的数字返回false了
注: これら 5 つの方法にはそれぞれ長所と短所があるため、慎重に比較して、使用するのに最適な方法を選択してください。
[推奨学習:
JavaScript 上級チュートリアル]
以上がJavaScriptで値が整数かどうかを判断する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。