Перейти к основному содержимому

Разделители цифр

· 2 мин. чтения
Маттиас Байненс ([@mathias](https://twitter.com/mathias))

Большие числовые литералы трудно быстро воспринимать человеческим глазом, особенно когда много повторяющихся цифр:

1000000000000
1019436871.42

Для улучшения читаемости новая языковая возможность JavaScript позволяет использовать подчеркивания в качестве разделителей в числовых литералах. Таким образом, приведенный выше пример можно переписать, группируя цифры по тысячам, например:

1_000_000_000_000
1_019_436_871.42

Теперь проще понять, что первое число — это триллион, а второе — около 1 миллиарда.

Разделители цифр помогают улучшить читаемость для всех видов числовых литералов:

// Десятичный литерал со сгруппированными по тысячам цифрами:
1_000_000_000_000
// Десятичный литерал со сгруппированными по тысячам цифрами:
1_000_000.220_720
// Двоичный литерал с его битами, сгруппированными по октетам:
0b01010110_00111000
// Двоичный литерал с его битами, сгруппированными по полубайтам:
0b0101_0110_0011_1000
// Шестнадцатеричный литерал с его цифрами, сгруппированными по байтам:
0x40_76_38_6A_73
// Литерал BigInt с его цифрами, сгруппированными по тысячам:
4_642_473_943_484_686_707n

Они даже работают для восьмеричных литералов (хотя я не могу придумать пример, где разделители полезны для таких литералов):

// Разделитель цифр в восьмеричном литерале: 🤷‍♀️
0o123_456

Обратите внимание, что JavaScript также имеет устаревший синтаксис для восьмеричных литералов без явного префикса 0o. Например, 017 === 0o17. Этот синтаксис не поддерживается в строгом режиме или в модулях, и его не следует использовать в современном коде. Соответственно, разделители цифр не поддерживаются для таких литералов. Вместо этого используйте литералы в стиле 0o17.

Поддержка разделителей цифр