对于人眼来说,快速解析大型数字字面量很困难,尤其是在存在大量重复数字的情况下。
1000000000000
1019436871.42
为了提高可读性,一项新的 JavaScript 语言功能 允许在数字字面量中使用下划线作为分隔符。因此,上面的代码现在可以改写为每千位分组数字,例如
1_000_000_000_000
1_019_436_871.42
现在更容易看出第一个数字是万亿,第二个数字是十亿级。
数字分隔符有助于提高各种数字字面量的可读性。
// A decimal integer literal with its digits grouped per thousand:
1_000_000_000_000
// A decimal literal with its digits grouped per thousand:
1_000_000.220_720
// A binary integer literal with its bits grouped per octet:
0b01010110_00111000
// A binary integer literal with its bits grouped per nibble:
0b0101_0110_0011_1000
// A hexadecimal integer literal with its digits grouped by byte:
0x40_76_38_6A_73
// A BigInt literal with its digits grouped per thousand:
4_642_473_943_484_686_707n
它们甚至适用于八进制整数字面量(尽管 我想不出分隔符对这种字面量有什么价值)。
// A numeric separator in an octal integer literal: 🤷♀️
0o123_456
请注意,JavaScript 还具有用于没有显式 0o
前缀的八进制字面量的传统语法。例如,017 === 0o17
。这种语法在严格模式或模块中不受支持,并且不应在现代代码中使用。因此,这些字面量不支持数字分隔符。请改用 0o17
样式的字面量。
对数字分隔符的支持 #
- Chrome: 从版本 75 开始支持
- Firefox: 从版本 70 开始支持
- Safari: 从版本 13 开始支持
- Node.js: 从版本 12.5.0 开始支持
- Babel: 支持