BigInt是JavaScript中专用于表示任意精度整数的原始类型,可安全处理超过Number.MAX_SAFE_INTEGER(9007199254740991)的大整数;创建方式为字面量加n后缀或BigInt()构造函数,不支持小数、NaN及与Number混算,适用于密码学、大ID、高精度金融计算等场景。

BigInt 是 JavaScript 中专门用于表示任意精度整数的原始类型,能安全处理超过 Number.MAX_SAFE_INTEGER(即 9007199254740991)的整数,避免精度丢失。
如何创建 BigInt
必须通过字面量加 n 后缀,或调用 BigInt() 构造函数,不能使用 new;字符串、十进制数字、十六进制(0x)、二进制(0b)等格式都支持,但不能传入小数或 NaN:
1234567890123456789012345678901234567890nBigInt("123456789012345678901234567890")-
BigInt(0xff)→255n - ❌ 错误:BigInt(12.5)、BigInt(null)、BigInt("12.5")
BigInt 的运算规则和限制
支持常见的算术运算(+、-、*、**、%),但不支持与普通 Number 混合运算,否则会报 TypeError:
-
100n + 200n✅ 返回300n -
100n + 200❌ 报错:“Cannot mix BigInt and other types” - 需显式转换:
100n + BigInt(200)或Number(100n) + 200(仅当值在安全整数范围内) - 比较可用
===、、>=等,但==会返回false(类型不同)
实际使用注意事项
BigInt 不是对象,没有原型方法(如 .toString() 除外),且不能用于 Date、Math 等依赖 Number 的 API:
- 可调用
toString(radix)转换进制,例如(255n).toString(16)→"ff" - 不能用于
JSON.stringify()(会报错),需手动处理,如JSON.stringify({ value: myBig.toString() }) - 数组排序时注意类型统一:
[1n, 3n, 2n].sort((a, b) => a - b)✅;混入 number 会出错 - 浏览器兼容性良好(Chrome 67+、Firefox 68+、Safari 14+),Node.js 10.4+ 支持
什么时候该用 BigInt
适用于密码学运算、高精度计时(如纳秒级时间戳)、大 ID 处理(如 Twitter Snowflake)、金融计算中需绝对整数精度的场景。若只是显示大数且不参与计算,字符串可能更轻量;若涉及数学运算又需保精度,BigInt 是唯一安全选择。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











