推荐使用 Number.isInteger() 判断整数,它是唯一专用于整数检测的标准方法,严格检查数值类型、无小数部分且在安全整数范围内,不进行类型转换。

JavaScript 中判断一个值是否为整数,推荐使用 Number.isInteger() —— 这是 Number 对象唯一的、专用于整数检测的静态方法。
✅ 使用 Number.isInteger() 判断整数
该方法接收一个参数,返回布尔值:true 表示该值是“安全的整数”(即数值类型、无小数部分、在安全整数范围内),false 表示不是。
- 只对
number类型且为整数的值返回 true - 对
NaN、Infinity、字符串(即使内容是整数,如"123")、null、对象、布尔值等一律返回 false - 不进行类型转换,严格区分类型和值
示例:
Number.isInteger(42) // true<br>
Number.isInteger(-10) // true<br>
Number.isInteger(0) // true<br>
Number.isInteger(3.14) // false<br>
Number.isInteger(5.0) // true(5.0 在 JS 中就是整数 5)<br>
Number.isInteger("10") // false(字符串,不转类型)<br>
Number.isInteger(NaN) // false<br>
Number.isInteger(Infinity) // false<br>
Number.isInteger(null) // false<br>
Number.isInteger({}) // false
⚠️ 注意:不要用 parseInt / Math.floor / %1 等替代
这些方式容易出错,不是真正可靠的整数判断:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
-
parseInt("12.34") === 12.34→false,但parseInt会截断字符串,误导判断 -
Math.floor(x) === x对Infinity或NaN会返回false或报错,且无法处理非数字类型 -
x % 1 === 0在x是字符串或布尔值时会隐式转换("5" % 1 === 0得true),违背“严格整数”的本意
? 补充:如何判断“可安全转换为整数”的值?
如果业务需要先尝试转换再判断(比如处理用户输入的字符串),应**显式转换 + 二次验证**:
- 先用
Number(str)转换,再用Number.isInteger() - 注意
Number(" ")、Number("")得到0,而Number("abc")得NaN
安全写法示例:
function isValidInteger(input) {<br>
const num = Number(input);<br>
return Number.isInteger(num);<br>
}<br>
<br>
isValidInteger("123") // true<br>
isValidInteger("12.0") // true<br>
isValidInteger("12.3") // false<br>
isValidInteger("") // false(Number("") → 0,但 0 是整数 → 实际为 true;若需排除空串,额外判断 input.trim() !== "")<br>
isValidInteger(" 42 ") // true(Number 处理了空白)
? 小结:唯一推荐的标准方法
Number.isInteger() 是 ECMAScript 标准定义的、语义明确、行为稳定的方法。它不兼容 IE(IE 不支持),如需兼容旧环境,可用 polyfill 或简单降级逻辑(如 typeof x === 'number' && isFinite(x) && Math.floor(x) === x),但日常开发中优先直接使用原生方法。

















