BigInt 不能与 Number 直接混合运算,需统一类型;创建方式为字面量(如123n)或 BigInt() 构造函数(支持整数或大数字符串);支持 +、-、、*、% 运算,除法 / 向零截断;关系比较允许自动转换,但相等性推荐用 ===;不支持小数、Math 方法、JSON 序列化及作为同值对象键。

JavaScript 中的 BigInt 不能和普通数字(Number)直接混合运算,必须统一类型才能正确计算。
BigInt 的创建方式
必须在整数末尾加 n,或用 BigInt() 构造函数:
-
123n—— 字面量写法,最常用 -
BigInt(123)—— 支持字符串或数字参数,但注意:BigInt(12.3)会报错,只接受整数值 -
BigInt("9007199254740991999999")—— 大数字符串是安全的创建方式
支持的基本算术运算
BigInt 支持 +、-、*、**(幂)、%(取余),但不支持 / 的小数结果(除法会自动向下取整):
100n + 50n === 150n100n * 3n === 300n100n ** 2n === 10000n-
100n / 3n === 33n(不是33.333...,而是向零截断) 100n % 7n === 2n
不能混用 Number 和 BigInt
任何涉及 Number 和 BigInt 的运算都会抛出 TypeError:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
-
100n + 1→ 报错 -
100n === 100→ 返回false(类型不同) - 需要显式转换:
100n + BigInt(1)或Number(100n) + 1(但后者有精度风险)
比较与逻辑操作注意点
相等性(==)会尝试类型转换但不推荐;建议用 === 并确保类型一致:
-
100n === BigInt(100)→true -
100n == 100→true(隐式转换,但易混淆,应避免) -
100n > 99→ 允许(关系运算符会自动转换Number为BigInt) -
!0n→false,!1n→false(BigInt只有0n是 falsy)
常见用途和限制
BigInt 适合精确大整数场景,比如加密、时间戳高精度处理、ID 计算等,但它不支持:
- 小数(无浮点能力)
-
Math对象方法(如Math.pow、Math.floor等) - JSON 序列化(
JSON.stringify(100n)报错,需手动处理) - 作为对象键时,
100n和100是不同键(类型不同)

















