Operador Exponencial

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.

Sumário

O operador de exponenciação (**) retorna o resultado de elevar o primeiro operando à potência do segundo operando. É equivalente ao método Math.pow, exceto que também aceita números do tipo BigInt como operandos.

Experimente

console.log(3 ** 4);
// Expected output: 81

console.log(10 ** -2);
// Expected output: 0.01

console.log(2 ** (3 ** 2));
// Expected output: 512

console.log((2 ** 3) ** 2);
// Expected output: 64

Sintaxe

js
x ** y;

Descrição

O operador de exponenciação é associativo à direita: a ** b ** c é igual a a ** (b ** c).

Na maioria das linguagens, como PHP, Python e outras que têm um operador de exponenciação (**), o operador de exponenciação é definido para ter uma precedência maior do que os operadores unários, como o unário + e unário -, mas há algumas exceções. Por exemplo, no Bash, o operador ** é definido para ter uma precedência menor do que os operadores unários.

Em JavaScript, é impossível escrever uma expressão de exponenciação ambígua. Ou seja, você não pode colocar um operador unário (+ / - / ~ /! / delete / void / typeof) imediatamente antes do número base; fazer isso causará um SyntaxError.

js
    -2 ** 2;
    // // 4 no Bash, -4 em outros idiomas.
    // Isso é inválido em JavaScript, pois a operação é ambígua.

    -(2 ** 2);
    // -4 em JavaScript e a intenção do autor não é ambígua.

Observe que algumas linguagens de programação usam o símbolo circunflexo ^ para exponenciação, mas o JavaScript usa esse símbolo para o operador XOR lógico bit a bit.

Exemplos

Exponenciação básica

js
2 ** 3; // 8
3 ** 2; // 9
3 ** 2.5; // 15.588457268119896
10 ** -1; // 0.1
NaN ** 2; // NaN

Associatividade

js
2 ** 3 ** 2; // 512
2 ** (3 ** 2); // 512
(2 ** 3) ** 2; // 64

Uso com operadores unários

Para inverter o sinal do resultado de uma expressão de exponenciação:

js
-(2 ** 2); // -4

Para forçar a base de uma expressão de exponenciação a ser um número negativo:

js
(-2) ** 2; // 4

Compatibilidade com navegadores

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Exponentiation (**)

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Veja também