đ§ââïž Todas as novas funcionalidades do Javascript desde 2016 atĂ© 2025
O Javascript evoluiu bastante com o passar do tempo e nem todo mundo sabe como funcionam os métodos mais recentes da linguagem, portanto fiz um compilado simplificado explicando a maioria dos métodos e funcionalidades lançados desde 2016 até 2025.
NĂŁo coloquei funcionalidades que sĂŁo mais complexas, como promises ou mudanças no regex, mas veja o link da fonte caso vocĂȘ queira mais detalhes
-
array.includes
: Este método permite verificar se um array contém um determinado elemento. à muito bom para elementos do tiponumber
estring
, mas tome cuidado ao verificar objetos, pois ele irĂĄ verificar por referĂȘncia e nĂŁo se o objeto contĂ©m as mesmas propriedades -
Operador de exponenciação (
**
): Este operador Ă© usado para calcular a potĂȘncia de um nĂșmero, substituindo a necessidade de usar o mĂ©todoMath.pow
. E se vocĂȘ estĂĄ se quanto Ă© zero elevado a zero (0 ** 0
), sim, Ă© 1. -
Object.values
eObject.entries
:Object.values
retorna um array com os valores das propriedades enumerĂĄveis de um objeto.Object.entries
retorna um array de pares[chave, valor]
das propriedades enumerĂĄveis de um objeto. Esses mĂ©todos sĂŁo Ășteis quando vocĂȘ usa em conjunto com mĂ©todos de array, comoArray.map
ouArray.filter
. -
string.{padStart,padEnd}
: Esses mĂ©todos permitem preencher uma string no inĂcio ou no final com um caractere especificado, atĂ© que a string atinja o comprimento desejado. -
VĂrgulas finais em listas de parĂąmetros e chamadas de função: Permite adicionar uma vĂrgula apĂłs o Ășltimo parĂąmetro de uma função ou argumento em uma chamada de função. Isso faz com que na hora de editar um cĂłdigo, vocĂȘ sĂł mude uma unica linha, criando menos ediçÔes no cĂłdigo e permitindo que o git blame mostre a pessoa certa.
-
Spread Operator
...
: VocĂȘ pode usar o operador...
para passar todas as propriedades de um objeto para outro. VocĂȘ tambem pode usar isso com arrays, passando todos os elementos de um array para o outro, mas tome cuidado para nĂŁo juntar um objeto com um array, pois darĂĄ erro. -
Object.fromEntries
: Este método é o inverso deObject.entries
, permitindo criar um objeto a partir de uma lista de pares[chave, valor]
. -
string.{trimStart,trimEnd}
: Estes mĂ©todos permitem remover espaços em branco do inĂcio (trimStart
) ou do final (trimEnd
) de uma string. -
array.{flat,flatMap}
:flat
achata arrays dentro de arrays, podendo diminuir o nĂșmero das dimensĂ”es de uma matrix. Por exemplo, vocĂȘ pode transformar uma matrix de 2 dimensĂ”es em um array (uma dimensĂŁo) -
string.matchAll
: Este mĂ©todo retorna todas as correspondĂȘncias de uma expressĂŁo regular em uma string. A vantagem desse mĂ©todo Ă© que ele retorna um iterator e vocĂȘ pode computar o regex dentro de um loop e sĂł executar o que for necessĂĄrio. -
BigInt
: Introduz o tipo de dadoBigInt
, que permite representar e operar em nĂșmeros inteiros muito grandes, alĂ©m do limite dos nĂșmeros inteiros tradicionais (Number
). Para representar umBitInt
, basta colocar umn
depois do nĂșmero. Por exemplo123n
. Mas tome cuidado ao compararBigInt
s com nĂșmero "normais", pois vocĂȘ precisarĂĄ converter os nĂșmeros. -
Encadeamento opcional (
Optional Chaining
): Este operador (?.
) permite acessar propriedades profundamente aninhadas em objetos sem precisar verificar manualmente se cada referĂȘncia no caminho Ă©null
ouundefined
. -
Operador de coalescĂȘncia nula (
??
): Este operador retorna o valor Ă direita se o valor Ă esquerda fornull
ouundefined
, permitindo um fallback mais seguro. -
string.replaceAll
: Este mĂ©todo substitui todas as ocorrĂȘncias de uma string ou expressĂŁo regular em uma string por outra string, sem precisar usar o flagg
manualmente. -
Operadores de atribuição lógica: Combina operadores lógicos (
&&
,||
,??
) com atribuição, permitindo expressĂ”es mais curtas e legĂveis para certas operaçÔes lĂłgicas. -
Separador numérico
_
: Que numero Ă© esse 100000000? Ă dificil de falar o nome do numero e ver quantas casas decimais ele tem imediatamente, mas vocĂȘ pode usar um separador numerico (_
) para separar dĂgitos do nĂșmero, tornando-os mais legĂveis sem afetar seu valor. Por exemplo 100_000_000 ficaria muito mais facil de entender. Lembrando que pode ser qualquer quantidade de casas, por exemplo 1_0_0_0_0_0, que Ă© estranho, mas funciona. -
array.at()
: Este mĂ©todo fornece uma maneira de acessar elementos de arrays e strings usando Ăndices positivos ou negativos, fazendo com que acessar o ultimo index do array seja muito mais facil. Basta passar.at(-1)
. -
Object.groupBy
eMap.groupBy
: Permite agrupar valores de um array baseado no valor retornado por uma função.Object.groupBy
retorna um objeto eMap.groupBy
retorna umMap
. -
Novos métodos da classe
Set
: Para explicar esses novos mĂ©todos eu achei muito mais fĂĄcil vocĂȘ ver os Vens Diagrams da prĂłpria documentação: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set#set_composition
- Para ver a lista completa: https://github.com/tc39/proposals/blob/HEAD/finished-proposals.md
- Se vocĂȘ prefere consumir esse conteĂșdo em video e com cĂłdigos de exemplo, veja em https://youtu.be/7ZRLIztfD6U