BigInt 用于表示任意精度整数,解决 Number 安全整数限制(2⁵³−1);声明用末尾加 n 或 BigInt() 构造函数;运算需同为 BigInt 类型;与 Number 交互需显式转换,且有精度和类型限制。

JavaScript 中的 BigInt 用于表示任意精度的整数,解决 Number 类型无法安全表示大于 253 - 1(即 9007199254740991)整数的问题。它不能与普通数字(Number)混用运算,声明和计算需注意语法和类型一致性。
如何声明 BigInt
有两种常用方式:
- 在整数字面量末尾加字母
n(最常用):const big1 = 123456789012345678901234567890n; - 调用
BigInt()构造函数(支持字符串或数字参数,但传入小数会报错):const big2 = BigInt("123456789012345678901234567890");const big3 = BigInt(123); // ✅BigInt(123.5); // ❌ TypeError
BigInt 的基本算术运算
支持 +、-、*、**、% 和 >>、 等位运算,但操作数必须全是 BigInt:
100n + 200n // → 300n5n ** 3n // → 125n100n % 7n // → 2n100n + 100; // ❌ TypeError: Cannot mix BigInt and other types
与 Number 类型交互的注意事项
BigInt 和 Number 不能直接混合计算,需显式转换:
- BigInt → Number:用
Number(bigInt)(仅适用于能被 Number 精确表示的值,否则会丢失精度或报错)Number(9007199254740991n) // → 9007199254740991Number(9007199254740992n) // → 9007199254740992(看似正常,但超出安全整数范围后不可靠) - Number → BigInt:用
BigInt(num)(要求 num 是整数,且不能是NaN、Infinity或小数)BigInt(123) // → 123nBigInt(123.5) // ❌BigInt(NaN) // ❌
比较与布尔行为
BigInt 支持 ===、==(与 Number 比较时会尝试转换)、>、 等比较操作:
100n === 100n // true100n == 100 // true(抽象相等,会转换)100n > 99 // true- ⚠️ 注意:
Boolean(0n)是false,Boolean(1n)是true,与 Number 行为一致











