Dev (Back & Front)ARTIGO

Conheça o operador exponencial do JavaScript

Neste artigo, o autor apresenta o operador exponencial do JavaScript e fala sobre o funcionamento da novidade.

Conheça o operador exponencial do JavaScript
Imagem: Diego Pinho

Há muitos anos que o JavaScript não ganhava modificações e funcionalidades novas tão relevantes, mas isso finalmente mudou quando o ECMAScript 2015 (ES6) chegou. Desde então, o TC39 – comitê da ECMA Internacional, responsável por manter a especificação – está lançando uma nova versão a cada ano. A ideia é que, com atualizações mais constantes, a evolução também é constante; evitando assim, grandes anos sem mudanças, como aconteceu na transição do ES5 para o ES6.

Por ser uma especificação mais enxuta, o ES7 trouxe basicamente duas funcionalidades interessantes para a linguagem: O método includes() para o objeto Array, e o operador exponencial.

Neste artigo, vamos focar no funcionamento deste novo operador. Caso você tenha interesse em aprender de forma mais completa sobre o ES7 e o ES8, te convido a olhar meu recém-lançado curso sobre o tema na Udemy, disponível neste link. Se você ainda não domina o ES6, há meu outro curso bem bacana sobre o tema também.

Conhecendo o operador de exponenciação

Para entender como esse operador trabalha, precisamos rever quais os fatores envolvidos no funcionamento de uma operação com potência:

Visto isso, antes do ES7 entrar em cena, para realizarmos uma operação exponencial, utilizávamos a famosa função pow do objeto Math. Como neste exemplo: vamos elevar cinco ao cubo, como representado na figura:

const resultado = Math.pow(5,3);

console.log(resultado); // 125

Bem simples, certo? No primeiro parâmetro da função colocamos a base, e no segundo o expoente. Se trocarmos a ordem dos elementos do exemplo anterior, teremos três elevado a cinco, onde o resultado é duzentos e quarenta e três.

const resultado = Math.pow(3,5);

console.log(resultado); // 243 = 3 * 3 * 3 * 3 * 3

Por outro lado, também precisamos lembrar que operações deste tipo podem conter expoentes negativos como, por exemplo, dois elevado a menos três:

const resultado = Math.pow(2,-3);

console.log(resultado); // 0.125 = 1/(2*2*2)

Até aí acredito que não há nenhuma novidade. Como o ES7, ou ECMAScript 2016, nós ganhamos o operador de exponenciação, que é representado por dois asteriscos seguidos (**). Seu funcionamento é praticamente igual aos exemplos anteriores, com a diferença que não há nenhuma função envolvida.

Por exemplo, vamos calcular novamente cinco ao cubo. Utilizando esse novo operador, ficaria assim:

const resultado = 5 ** 3;

console.log(resultado); // 125 = 5 * 5 * 5

Bem simples, certo? Conseguimos até mesmo quebrar o cálculo exponencial em duas partes, desta maneira:

let numero = 5;
numero **= 3;
console.log(resultado); // 125

Reparem que, ao utilizar a notação **=, ele pega o valor armazenado na variável número como base e coloca o valor depois da igualdade como exponente. Ao final, temos exatamente o mesmo resultado.

Por fim, também conseguimos realizar operações com o expoente negativo, da mesma maneira que fizemos antes:

const resultado = 2 ** -3;

console.log(resultado); // 0.125

Conclusão

Esta é uma das funcionalidades trazidas para a linguagem, além do método includes() para Array. Seu funcionamento é bem simples, e de acordo com o site “Can I Use“, todos os navegadores modernos já dão suporte a ela (no caso do Node, somente a partir da versão 8.10). Caso você tenha interesse em ver mais detalhes sobre essa funcionalidade, neste link há os detalhes da funcionalidade na especificação.

Referências

Bacharel em Ciência da Computação pela PUCSP e MBA em Gestão da Tecnologia da Informação na FIAP. Autor do livro ECMAScript 6 - Entre de cabeça no futuro do JavaScript. Cofundador da Code Prestige e Community Manager no iMasters.

Ver perfil