BigInt 是 JavaScript 中用于精确表示任意精度整数的原始类型,解决 Number 类型超出 9007199254740991 后精度丢失问题;需用后缀 n 或 BigInt() 创建,不支持小数、Math 方法及 JSON 序列化,运算需同类型,ES2020 起支持。

BigInt 是 JavaScript 中用于表示任意精度整数的原始类型,专门解决 Number 类型无法精确表示超过 253 − 1(即 9007199254740991)的大整数的问题。
为什么需要 BigInt?
JavaScript 的 Number 类型基于 IEEE 754 双精度浮点数,能安全表示的最大整数是 Number.MAX_SAFE_INTEGER(9007199254740991)。超出这个范围后,整数会丢失精度:
9007199254740992 === 9007199254740993 返回 true(实际不相等,但 JS 无法区分) 涉及大 ID、密码学运算、高精度计时、金融计算等场景时,精度错误不可接受
如何创建和使用 BigInt?
必须用字面量后加 n,或调用 BigInt() 构造函数(注意:不能传入小数):
const big1 = 123456789012345678901234567890n; const big2 = BigInt("123456789012345678901234567890"); BigInt(100) ✅;BigInt(10.5) ❌(抛出 TypeError)
支持常见算术运算:+、-、*、**、%,但不支持与 Number 混合运算(会报错),需显式转换:
立即学习“Java免费学习笔记(深入)”;
10n + 20n ✅ → 30n 10n + 20 ❌ → TypeError 如需混合,先转成同类型:10n + BigInt(20) 或 Number(10n) + 20(但后者可能溢出)
BigInt 的限制和注意事项
它不是 Number 的升级替代品,而是补充,有明确边界:
不能用于 Math 对象方法(如 Math.pow、Math.max),会报错 不能与普通数字比较大小用 == 或 ===?可以,但仅限 ===(严格相等)支持跨类型比较:10n === 10 是 false,10n == 10 是 true(不推荐用 ==) JSON 不支持 BigInt,JSON.stringify(100n) 会抛错,需手动处理(如转字符串) typeof 返回 "bigint",是独立的原始类型
基本上就这些。BigInt 解决了大整数精度痛点,但要用对场景,注意类型隔离和兼容性(ES2020 起支持,现代浏览器和 Node.js 10.4+ 均可用)。
以上就是什么是JavaScript的BigInt类型?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1543039.html
微信扫一扫
支付宝扫一扫