bigint字面量必须以小写n结尾,仅支持十进制、0b二进制、0o八进制、0x十六进制整数形式;不支持小数点、科学计数法、大写n或前导零(严格模式);与number不能自动混合运算,需显式转换,且json不原生支持。

JavaScript中BigInt字面量必须以小写字母 n 作为后缀,且不能与浮点数、科学计数法或十六进制前缀(如 0x)混用;它只支持十进制、二进制(0b)、八进制(0o)和十六进制(0x)整数字面量加 n。
合法的BigInt字面量写法
以下形式均符合语法规范:
-
123n—— 十进制整数后直接加n -
0b1101n—— 二进制,前缀0b+ 数字 +n -
0o755n—— 八进制,前缀0o+ 数字 +n -
0xFFn—— 十六进制,前缀0x+ 大小写混合字母/数字 +n
常见的非法写法及原因
这些写法会触发 SyntaxError:
-
123.45n—— 小数点不被允许,BigInt只表示整数 -
1e10n—— 科学计数法不支持,即使结果是整数也不行 -
0x12.3n—— 十六进制中不能含小数点 -
123N或123N—— 后缀必须是小写n,大写N无效 -
0123n—— 带前导零的十进制字面量在严格模式下报错(虽非BigInt专属,但需注意)
与Number类型转换的注意事项
BigInt不能自动与Number混用运算,也不能直接用于大多数内置函数(如 Math.max):
- 加减乘除等算术操作符仅在两个操作数同为BigInt时有效,否则抛出
TypeError - 需显式转换:
BigInt(123)可将Number转为BigInt(但不能转小数),Number(123n)可转回Number(但超出2^53 - 1范围会丢失精度) - JSON不支持BigInt,
JSON.stringify(123n)会抛错,需手动处理
实际编码建议
为保障可读性与兼容性,推荐:
- 始终使用小写
n,避免大小写混淆 - 对大整数常量明确标注
n,如9007199254740991n(Number.MAX_SAFE_INTEGER的BigInt形式) - 避免在需要浮点计算或与现有Number逻辑强耦合的场景中强行引入BigInt
- 在支持BigInt的环境中(现代浏览器、Node.js ≥ v10.4.0),优先用字面量而非
BigInt()构造函数,更简洁且性能略优
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











