跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

JavaScript中Number-isInteger判断整数的可靠性

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

相关文章