べき乗 (**)

べき乗演算子 (**) は、1番目のオペランドを2番目のオペランドの累乗まで上げた結果を返します。これは Math.pow と同等ですが、オペランドとして BigInt も受け入れます。

構文

Operator: var1 ** var2

説明

べき乗演算子は右結合的です: a ** b ** ca ** (b ** c) と等しくなります。

PHP や Python など、べき乗演算子 (**) を持つほとんどの言語では、べき乗演算子は単項演算子 (単項演算子 + や単項演算子 - など) よりも優先順位が高いと定義されていますが、いくつかの例外があります。例えば、Bash では ** 演算子は単項演算子よりも優先順位が低いと定義されています。

JavaScriptでは、あいまいなべき乗式を記述することはできません。 つまり、基数の直前に単項演算子 (+/-/~/!/delete/void/typeof) を置くことはできません。 これを行うと、SyntaxError が発生します。

-2 ** 2;
// Bashでは 4 他の言語では -4
// JavaScriptでは意図があいまいなため無効


-(2 ** 2);
// JavaScriptでは意図が明白なため -4

注意: 一部のプログラミング言語ではべき乗計算にキャレット記号 ^ を使用していますが、JavaScript ではビット排他的論理和にこの記号を使用しています。

基本的なべき乗

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

単項演算子との使用

べき乗式の結果の符号を反転させる

-(2 ** 2) // -4

べき乗式の基底を強制的に負の数にする

(-2) ** 2 // 4

仕様

仕様書
ECMAScript (ECMA-262)
Exponentiation operator の定義

ブラウザの互換性

BCD tables only load in the browser

関連情報