bigint()构造函数必须显式传入字符串或安全整数,不支持小数、空字符串、null、undefined及超出安全范围的数字字面量,且不可用new调用;推荐优先使用n后缀字面量。

JavaScript 中 BigInt 构造函数的用法很简单,但有几个关键点必须注意,否则容易报错。
BigInt() 的合法调用方式
BigInt() 是一个函数,不是类,不能用 new 调用;它只接受两类参数:
- 字符串:如
BigInt("9007199254740991999999")—— 这是最安全的方式,避免 Number 先解析失真 - 安全范围内的整数(≤
Number.MAX_SAFE_INTEGER):如BigInt(123)或BigInt(-456)
哪些输入会直接报错
以下写法都会抛出 TypeError 或语法错误:
-
BigInt(123.5):小数会被拒绝,不支持浮点数 -
BigInt("123.45"):含小数点的字符串无效 -
BigInt(" 123 "):首尾空格允许,但中间有空格或非法字符(如字母、符号)会失败 -
BigInt(undefined)、BigInt(null)、BigInt(""):均抛出TypeError
与字面量 n 后缀的关系
构造函数不是必须的,日常推荐优先使用字面量(如 12345678901234567890n),因为更简洁、无运行时开销。BigInt() 主要用于动态场景:
- 从后端 API 接收的超长 ID 字符串转为可运算的大整数
- 需要根据条件生成 BigInt,而值在运行时才确定
- 兼容性兜底逻辑中做类型转换(配合
typeof检查)
常见误用提醒
这些操作看似合理,但实际不可行:
-
BigInt(9007199254740992):参数先被当作 Number 解析,已超出安全整数范围,精度丢失后再转 BigInt,结果错误 -
BigInt("0x1F"):十六进制字符串不被直接支持,需改用BigInt("0x1F", 16)?—— 实际上BigInt()不接受进制参数,正确写法是BigInt("0x1F")✅(它原生支持 0x/0o/0b 前缀) -
BigInt(NaN)或BigInt(Infinity):全部报错
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











