数字分隔符

发布日期 · 标签:ECMAScript ES2021

对于人眼来说,快速解析大型数字字面量很困难,尤其是在存在大量重复数字的情况下。

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 样式的字面量。

对数字分隔符的支持 #