bigint 不能隐式转字符串,必须显式调用 tostring() 或 string();模板字符串中也需手动转换;tostring() 支持进制参数且不丢失精度;json.stringify 会忽略 bigint。
bigint 不能直接与字符串拼接,会报 typeerror: cannot convert a bigint value to a string 错误。必须显式转成字符串才能拼接。
BigInt 必须先调用 toString() 方法
JavaScript 不允许隐式转换 BigInt 到字符串,所以不能写 let result = 123n + "abc"。正确做法是手动转为字符串:
-
123n.toString() + "abc"→"123abc" -
"prefix" + (456n).toString()→"prefix456" - 支持传入进制参数:
255n.toString(16)→"ff"
模板字符串中也要显式转换
哪怕在反引号中,也不能直接插值 BigInt:
- ❌ 错误:
`value: ${123n}`(运行时报错) - ✅ 正确:
`value: ${123n.toString()}`或`value: ${String(123n)}` -
String()是另一种等效方式,和toString()行为一致
注意大数精度和 toString 的兼容性
BigInt 的 toString() 在所有现代浏览器和 Node.js(v10.4+)中都可用,但不支持科学计数法(BigInt 没有浮点表示)。拼接时不会丢失精度:
-
1234567890123456789012345678901234567890n.toString() + "x"安全输出完整数字串加 "x" - 不要用
"" + bigInt或bigInt + "",这会触发隐式转换并报错
常见错误场景与修复
以下写法都会失败,需统一改为显式转换:
-
console.log("id: " + 9999999999999999999999999999999999999999999n)→ 改为console.log("id: " + 9999999999999999999999999999999999999999999n.toString()) -
JSON.stringify({ num: 123n })会把 BigInt 变成undefined→ 若需序列化,应提前转字符串或自定义 replacer
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











