BigInt 是 JavaScript 用于安全表示任意精度整数的原始类型,以 n 结尾(如 123n),支持算术与比较操作,但不可与 Number 混合运算,需显式转换。

JavaScript 的 BigInt 是一种内置原始类型,专门用来安全地表示和运算任意精度的整数——也就是比 Number 类型能表示的最大安全整数(2⁵³ − 1)还要大的整数。
BigInt 用后缀 n 表示大整数
创建 BigInt 最直接的方式是在整数字面量末尾加一个字母 n:
-
123n是一个 BigInt,而123是普通 number -
9007199254740992n精确表示该值,不会像9007199254740992那样在 Number 中因精度丢失变成9007199254740992(看似一样,但再加 1 就出问题) - 不能用小数或指数形式:❌
1.5n、❌1e5n;只能是整数加n
BigInt 支持基本算术和比较操作
它可以做加(+)、减(-)、乘(*)、除(/)、取余(%)、幂(**)等运算,结果仍是 BigInt:
100n + 50n === 150n-
2n ** 64n得到精确的 2⁶⁴(18446744073709551616n) - 注意:
===可以比较两个 BigInt,但==会报错(因为 BigInt 和 Number 不可隐式转换) - 大小比较(
、>)允许与 Number 混用,如100n > 99返回true
BigInt 不能和 Number 混合运算
这是关键限制:你不能直接把 BigInt 和普通数字相加、相乘等,否则会抛出 TypeError:
技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作
立即学习“Java免费学习笔记(深入)”;
- ❌
10n + 5→ 报错 - ✅ 正确做法是显式转换:
10n + BigInt(5)或Number(10n) + 5(但后者可能丢失精度) - ⚠️ 转换要谨慎:
Number(123456789012345678901234567890n)会四舍五入成近似值,不再精确
常见使用场景
BigInt 主要用在需要高精度整数计算的地方:
- 密码学运算(如 RSA 大素数模幂)
- 处理时间戳(比如纳秒级高精度计时,超过
Date.now()范围) - 金融系统中避免浮点误差的大额整数计数(如链上 token 数量)
- 科学计算或大数据 ID(如 Twitter Snowflake ID,64 位整数)
基本上就这些。BigInt 不复杂但容易忽略类型隔离规则——记住加 n、别混用、转换要小心,就能稳稳处理超大整数。










