--- title: Operador Exponencial slug: Web/JavaScript/Reference/Operators/Exponentiation tags: - JavaScript - Operador Exponencial translation_of: Web/JavaScript/Reference/Operators/Exponentiation original_slug: Web/JavaScript/Reference/Operators/Operador_Exponencial ---
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.
x ** y;
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.
-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
.
2 ** 3 // 8 3 ** 2 // 9 3 ** 2.5 // 15.588457268119896 10 ** -1 // 0.1 NaN ** 2 // NaN
2 ** 3 ** 2 // 512 2 ** (3 ** 2) // 512 (2 ** 3) ** 2 // 64
Para inverter o sinal do resultado de uma expressão de exponenciação:
-(2 ** 2) // -4
Para forçar a base de uma expressão de exponenciação a ser um número negativo:
(-2) ** 2 // 4
{{Compat}}