大きな数値リテラルは、特に繰り返し数字が多い場合、人にとってすばやく解析するのは困難です
1000000000000
1019436871.42
読みやすさを向上させるために、新しい JavaScript 言語機能 により、数値リテラルのアンダースコア区切り記号が有効になりました。そのため、上記は、たとえば 1,000 ごとに数字をグループ化して次のように書き換すことができます。
1_000_000_000_000
1_019_436_871.42
最初の数値は兆であり、2 番目の数値は 10 億のオーダーであることがわかりやすくなりました。
数値セパレータはあらゆる種類の数値リテラルの読みやすさを向上させるのに役立ちます
// 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
そのようなリテラルに対するセパレータの価値は思いつきませんが、8 進数整数リテラルでも機能します
// A numeric separator in an octal integer literal: 🤷♀️
0o123_456
JavaScript には、明示的な 0o
プレフィックスのない、8 進数リテラルのレガシー構文もあります。たとえば、017 === 0o17
です。この構文は、厳密モードやモジュール内ではサポートされておらず、最新のコードでは使用しないでください。したがって、これらのリテラルでは数値セパレータはサポートされていません。代わりに 0o17
スタイルのリテラルを使用してください。
数値セパレータのサポート #
- Chrome: バージョン 75 以降でサポートされています
- Firefox: バージョン 70 以降でサポートされています
- Safari: バージョン 13 以降でサポートされています
- Node.js: バージョン 12.5.0 以降でサポートされています
- Babel: サポートされています