JavaScript从ES2021起支持下划线作为数值字面量分隔符,用于提升可读性而不改变值;适用于十进制、二进制(0b)、八进制(0o)、十六进制(0x)及科学计数法,但不可在开头、结尾、连续出现、紧邻小数点、进制前缀或指数符号e/E旁。

JavaScript 从 ES2021 开始支持用下划线(_)作为数值字面量的分隔符,纯粹为了人眼阅读方便,不影响数值本身和运行时行为。
哪些数字能加下划线
十进制、二进制(0b)、八进制(0o)、十六进制(0x)以及科学计数法都支持。比如:
-
十进制:
1_000_000、3.141_592 -
二进制:
0b1100_0011_1001_0100 -
十六进制:
0xFF_FF_00 -
科学计数法:
1_000_000e0或1e6(但不能写成1_e6或1e_6)
怎么写才合法
下划线位置有明确限制,错一处就会报 SyntaxError:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 不能在最前面或最后面,如
_123或123_不行 - 不能连续出现,如
1__000不行 - 不能紧挨小数点,如
1._23或1.23_不行 - 不能紧贴进制前缀,如
0b_101不行,但0b10_10可以 - 不能出现在
e或E前后,如1e_6或1_e6不行
适合用在哪些地方
推荐用于源码中定义常量或配置值,让意图一目了然:
立即学习“Java免费学习笔记(深入)”;
- 时间单位:
const MS_PER_DAY = 86_400_000; - 内存大小:
const BUFFER_SIZE = 64_000; - 颜色掩码:
const ALPHA_MASK = 0xFF_00_00_00; - 位操作值:
const FLAG_READ = 0b0001_0000;
需要注意的坑
这个语法只存在于源码字面量中,运行时字符串转数字不认下划线:
-
Number('1_000')→NaN -
parseInt('1_000')→1(只取开头数字,忽略后续字符) -
parseFloat('3.14_159')→3.14(遇到下划线就停) - 所有输出方法(如
toString())都不带下划线,只显示纯数字

















