JavaScript中number与Integer数据类型的区别讲解及示例咨询
JavaScript中
number与「Integer」的核心区别 首先明确:JavaScript 不存在独立的Integer基础数据类型,日常提到的Integer仅属于number类型下的子集,不是与number平级的类型。
number是ECMAScript标准定义的原始类型之一,底层基于64位双精度浮点数实现,可覆盖整数、小数、±Infinity、NaN等所有数字类值。- Integer(整数)是
number类型中没有小数部分的数值集合,仅存在语义层面的区分,没有单独的类型标识。 - 注意不要和ES2020新增的
BigInt类型混淆,BigInt是独立的原始类型,专门用于存储超出number安全精度范围的大整数。
使用示例
类型校验示例
// 无论是整数还是小数,typeof返回结果都是number console.log(typeof 2024); // 输出 'number' console.log(typeof 2024.12); // 输出 'number' console.log(typeof NaN); // 输出 'number' console.log(typeof Infinity); // 输出 'number' // 可以通过Number.isInteger判断一个number值是否为整数 console.log(Number.isInteger(2024)); // true console.log(Number.isInteger(2024.0)); // true console.log(Number.isInteger(2024.12)); // false console.log(Number.isInteger(NaN)); // false
安全整数范围示例
number可精确表示的整数范围为-(2^53 -1) ~ 2^53 -1,超出该范围的整数值会出现精度丢失:
console.log(2 ** 53); // 9007199254740992 console.log(2 ** 53 + 1); // 仍然输出9007199254740992,精度丢失 // 超出范围的整数需要精确计算时,建议使用BigInt类型 console.log(9007199254740992n + 1n); // 输出9007199254740993n,精度正常
语义层面的Integer应用
很多内置API会要求输入符合Integer语义,仅表示要求传入的number值无小数部分,并非要求新的数据类型:
// Array构造函数仅接收非负整数作为长度参数 const validArr = new Array(10); // 正常生成长度为10的空数组 const invalidArr = new Array(10.5); // 抛出RangeError: Invalid array length
内容的提问来源于stack exchange,提问作者RIchard
相关产品推荐
相关产品推荐

