number.isinteger只对number类型且数学上为整数的值返回true:拒绝nan、infinity、字符串、布尔值、bigint;接受5.0、0.0等无小数部分的数值;不转换类型,也不检查安全性。

Number.isInteger 只对真正意义上的整数返回 true,对 NaN、Infinity、-Infinity 以及非数字类型(包括字符串形式的整数)一律返回 false。
对 NaN 和 Infinity 的处理
这些值在数学上不属于整数范畴,因此 Number.isInteger 明确拒绝它们:
-
Number.isInteger(NaN)→false -
Number.isInteger(Infinity)→false -
Number.isInteger(-Infinity)→false
对浮点数和小数部分为 0 的数的区别对待
即使数值在数学上等于整数(如 5.0),只要其内部表示为浮点数且类型是 number,仍可能通过检测;但关键在于它是否“被规范为整数”:
-
Number.isInteger(5.0)→true(因为5.0在 JS 中就是5,无实际小数部分) -
Number.isInteger(5.000000000000001)→false(有不可忽略的小数部分) -
Number.isInteger(0.0)→true(+0 和 -0 都返回true)
不进行类型转换,严格区分数据类型
它不会尝试把字符串、布尔值等转成数字再判断:
-
Number.isInteger("10")→false(字符串,不是 number 类型) -
Number.isInteger(true)→false(布尔值) -
Number.isInteger(10n)→false(BigInt 不是 Number 类型) -
Number.isInteger(10)→true(纯数字、整数值、number 类型)
与 isFinite 和 Number.isSafeInteger 的关系
它不检查数值是否有限或是否在安全整数范围内:
-
Number.isInteger(9007199254740992)→true(尽管超出Number.MAX_SAFE_INTEGER,仍是整数) -
Number.isSafeInteger(9007199254740992)→false(因精度限制,无法安全表示) -
Number.isInteger不关心是否可安全运算,只确认“是不是整数”
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











