Pular para o conteúdo principal

Separadores Numéricos

· Leitura de 2 minutos
Mathias Bynens ([@mathias](https://twitter.com/mathias))

Literais numéricos grandes são difíceis para o olho humano interpretar rapidamente, especialmente quando há muitos dígitos repetidos:

1000000000000
1019436871.42

Para melhorar a legibilidade, uma nova funcionalidade da linguagem JavaScript permite sublinhados como separadores em literais numéricos. Assim, o exemplo acima agora pode ser reescrito para agrupar os dígitos por milhar, por exemplo:

1_000_000_000_000
1_019_436_871.42

Agora é mais fácil perceber que o primeiro número é um trilhão, e o segundo número é da ordem de 1 bilhão.

Separadores numéricos ajudam a melhorar a legibilidade para todos os tipos de literais numéricos:

// Um literal inteiro decimal com seus dígitos agrupados por milhar:
1_000_000_000_000
// Um literal decimal com seus dígitos agrupados por milhar:
1_000_000.220_720
// Um literal inteiro binário com seus bits agrupados por octeto:
0b01010110_00111000
// Um literal inteiro binário com seus bits agrupados por nibble:
0b0101_0110_0011_1000
// Um literal inteiro hexadecimal com seus dígitos agrupados por byte:
0x40_76_38_6A_73
// Um literal BigInt com seus dígitos agrupados por milhar:
4_642_473_943_484_686_707n

Eles até funcionam para literais inteiros octais (embora eu não consiga pensar em um exemplo onde os separadores sejam úteis para tais literais):

// Um separador numérico em um literal inteiro octal: 🤷‍♀️
0o123_456

Observe que o JavaScript também tem uma sintaxe legada para literais octais sem o prefixo explícito 0o. Por exemplo, 017 === 0o17. Essa sintaxe não é suportada no modo estrito ou dentro de módulos, e não deve ser usada em código moderno. Consequentemente, separadores numéricos não são suportados para esses literais. Use literais no estilo 0o17 em vez disso.

Suporte para separadores numéricos