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
Sintaxe
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.
-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
2 ** 3; // 8
3 ** 2; // 9
3 ** 2.5; // 15.588457268119896
10 ** -1; // 0.1
NaN ** 2; // NaN
Associatividade
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:
-(2 ** 2); // -4
Para forçar a base de uma expressão de exponenciação a ser um número negativo:
(-2) ** 2; // 4
Compatibilidade com navegadores
BCD tables only load in the browser