JavaScript下划线数字分隔符是ES2021引入的语法糖,仅用于提升长数字可读性,运行时被忽略;合法位置限于两数字间,禁用开头、结尾、小数点/进制前缀/指数符号旁及连续使用。

JavaScript 中的下划线数字分隔符(_)是 ECMAScript 2021(ES12)正式引入的语法特性,用于提升长数字字面量的可读性。它纯粹是词法层面的语法糖,编译或运行时完全被忽略,不影响数值本身、类型、精度或行为。
支持的数字类型和合法位置
下划线只能出现在两个数字字符之间,不能紧邻以下位置:
- 数字字面量开头或结尾(如
_123或123_❌) - 小数点前后(如
3_.14、3._14、3.14_❌) - 进制前缀之后(如
0_b101、0x_ff❌;但0b10_10、0xFF_00✅) - 指数符号(
e或E)附近(如1e_6、1_e6、1e6_❌;但1_234e5✅) - 连续多个下划线(如
1__000❌)
各进制下的使用示例
不同进制数字均可使用,但需注意格式惯例:
-
十进制:常用于金额、计数等,按千位分组更直观 ——
1_000_000、3.141_592_653 -
二进制:推荐每 4 位一组,契合字节/位操作习惯 ——
0b1100_0011_1010_1111 -
十六进制:同样适合 4 位分组或按字节对齐 ——
0xFF_FF_00_00 -
八进制:支持(如
0o755→0o7_55),但0_755非法(下划线不能紧跟0o后)
不支持的场景与常见错误
这些写法会直接导致语法错误(SyntaxError),且错误提示往往不明确:
立即学习“Java免费学习笔记(深入)”;
- 在科学计数法的指数部分加下划线:
123e_45、123e4_5 - 在 BigInt 字面量中误用(BigInt 支持下划线,但必须写在
n前,如123_456n;123n_456❌) - 从 Python/Java 复制习惯,把下划线加在末尾或开头(JS 比它们更严格)
- 在模板字符串或字符串字面量中误以为有相同效果(
"1_000"是纯字符串,无数值含义)
实际编码建议
下划线不是装饰,而是可读性工具,应有节制地使用:
- 优先用于 ≥ 5 位的整数或 ≥ 6 位的小数,例如时间戳
1_745_000_000_000、掩码0b1111_0000_1010_0001 - 避免在短数字中滥用,如
42写成4_2反而干扰识别 - 团队项目中统一分组风格(如十六进制统一 2 位或 4 位一组),避免随意断开
- 注意兼容性:需运行在支持 ES2021 的环境(现代浏览器、Node.js ≥ v16.0.0)


















