Number.isInteger() 是 JavaScript 中判断值是否为整数的可靠方法,仅对数值类型且数学意义为整数时返回 true,不进行类型转换;ES6 引入,旧环境可用 polyfill 兼容。

Number.isInteger() 是 JavaScript 中专门用来判断一个值是否为整数的内置方法,它比手动用 Math.floor(x) === x 或正则等方式更可靠、语义更清晰。
基本用法和返回值
该方法接收一个参数,返回布尔值:
- 如果参数是数值类型(number)且是整数(如 5、-10、0),返回 true;
- 其他情况(包括 NaN、Infinity、字符串、对象、null、undefined 等)一律返回 false。
示例:
Number.isInteger(42) // trueNumber.isInteger(-7) // true
Number.isInteger(0) // true
Number.isInteger(3.14) // false
Number.isInteger(NaN) // false
Number.isInteger(Infinity) // false
Number.isInteger("10") // false
Number.isInteger([1]) // false
注意:只对 number 类型有效
它不会尝试类型转换,这点和 parseInt() 或 Number() 不同。传入字符串、布尔值等非数字类型时,直接返回 false,不会报错但结果可能不符合直觉。
- 想安全判断字符串形式的整数(如
"123"),需先转成数字再判断:
Number.isInteger(Number("123")) // true - 但要注意
Number(" ")或Number("abc")会变成NaN,而Number.isInteger(NaN)是false,所以天然安全。
和 parseInt / Math.round 的区别
避免常见误区:
立即学习“Java免费学习笔记(深入)”;
-
parseInt("10.9")返回10→Number.isInteger(parseInt("10.9"))是true,但这不代表原值是整数; -
Math.round(10.9)也得11,同样有误导风险; -
Number.isInteger()判断的是原始值本身是否为数学意义上的整数,不作任何取整或截断。
兼容性与替代方案
该方法在 ES6(ECMAScript 2015)中引入,现代浏览器和 Node.js(v0.12+)均支持。若需兼容旧环境(如 IE),可使用 polyfill:
if (!Number.isInteger) {Number.isInteger = function(value) {
return typeof value === 'number' &&
isFinite(value) &&
Math.floor(value) === value;
};
}


















