Number.isInteger()能准确识别数值类型且数学意义为整数的值,如42、-10、0、42.0;对NaN、Infinity、字符串、布尔值、null等非数字类型均返回false,不进行类型转换,语义清晰、行为确定。
Number.isInteger()
在绝大多数情况下是判断整数最可靠、最直接的方法,但它有明确的适用边界——它只对真正的数字类型(
)有效,且严格区分整数与浮点数表示形式。
它能准确识别什么?
该方法检查传入值是否为“数值类型”且“数学意义上为整数”(即无小数部分):
→
→
→
→
(尾部 .0 不影响数值本质)
→
→
→
它不能处理哪些常见情况?
它**不进行类型转换**,因此对字符串、布尔值、null 等非数字类型一律返回
:
→
(字符串,不是 number 类型)
→
(布尔值)
→
→
→
如果业务中输入来源多样(如表单值、URL 参数),需先确保值是数字类型,或配合
和类型转换使用。
立即学习
“
Java免费学习笔记(深入)
”;
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
和 parseInt / Math.floor 等方案比,优势在哪?
传统方式容易出错:
→
,但
显然不是整数
→
,但逻辑绕弯且对负数需额外处理(如
)
对
、
会返回
或
,且要求
是数字类型
语义清晰、行为确定、ECMAScript 标准定义,避免了隐式转换陷阱。
安全使用的建议
若需兼容非数字输入,可封装一层校验:
先用
排除非数字类型
再用
判定
如需支持字符串数字,可先尝试
转换,再判断(注意
得到
,
得到
,此时再用
即可)
例如:
numberNumber.isInteger(42)trueNumber.isInteger(-10)trueNumber.isInteger(0)trueNumber.isInteger(42.0)trueNumber.isInteger(42.1)falseNumber.isInteger(NaN)falseNumber.isInteger(Infinity)falsefalseNumber.isInteger("42")falseNumber.isInteger(true)falseNumber.isInteger(null)falseNumber.isInteger(undefined)falseNumber.isInteger({})falsetypeofparseInt("42.9") === 42true"42.9"Math.floor(42.9) === 42.9falseMath.ceil(-42.1)val % 1 === 0NaNInfinityNaNfalsevalNumber.isInteger()typeof val === 'number'Number.isInteger(val)Number(val)Number("42.0")42Number("42.1")42.1isIntegerfunction isStrictInteger(val) {
const num = Number(val);
return typeof num === 'number' && !isNaN(num) && Number.isInteger(num);
}