最直接的方式是使用 bigint() 构造函数,需传入符合格式的整数字符串(支持十进制、十六进制、二进制、八进制),禁止小数点、空格、逗号等;无效输入会抛 syntaxerror,且不可与 number 混算。
javascript 中将字符串转换为 bigint 类型,最直接的方式是使用 bigint() 构造函数,但必须确保字符串符合 bigint 字面量格式,否则会抛出 syntaxerror。
使用 BigInt() 构造函数(推荐)
这是标准且最常用的方法。传入一个表示整数的字符串(可带正负号),不能含小数点、空格、逗号或单位符号。
-
BigInt("123")→123n -
BigInt("-9007199254740991")→-9007199254740991n -
BigInt("0xff")→255n(支持十六进制) -
BigInt("0b1010")→10n(支持二进制) -
BigInt("0o777")→511n(支持八进制)
⚠️ 注意:BigInt("")、BigInt("12.3")、BigInt(" 123 ")、BigInt("1,000") 均会报错。
先清理再转换(处理不规范输入)
如果字符串可能含空格、前导零或非数字字符,需预处理:
- 用
trim()去首尾空格 - 用正则过滤掉非法字符(仅保留数字、
+、-、0x/0b/0o前缀) - 避免直接对无效字符串调用
BigInt()
示例:
const safeParseBigInt = (str) => {const cleaned = str.trim().replace(/^(0[xXbBoO][0-9a-fA-F]+)$|^[+-]?\d+$/, '$&');
try { return BigInt(cleaned); }
catch { return null; }
};
与 Number 转换的区别
BigInt 不兼容 Number 运算,也不能与普通数字混用:
-
BigInt("10") + 5→ 报错(TypeError) - 必须显式转换:
BigInt("10") + BigInt(5)或BigInt("10") + 5n -
Number有精度限制(最大安全整数2^53 - 1),而BigInt支持任意长度整数
不支持 parseFloat / parseInt 直接转 BigInt
parseInt() 返回的是 Number,若原字符串超出 Number.MAX_SAFE_INTEGER,精度会丢失,再转 BigInt 已无意义:
-
BigInt(parseInt("9007199254740991999"))→ 可能错误(因parseInt先截断) - 应始终优先用
BigInt(str),而非经Number中转
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











