べき乗 (**)
べき乗演算子 (**
) は、1 つ目のオペランドを2 つ目オペランドの累乗にした結果を返します。これは Math.pow
と同等ですが、オペランドとして BigInt も受け入れます。
試してみましょう
構文
js
x ** y;
解説
べき乗演算子は右結合です。 a ** b ** c
は a ** (b ** c)
と等しくなります。
PHP や Python など、べき乗演算子 (**
) を持つほとんどの言語では、べき乗演算子は単項演算子 (単項 +
や単項 -
など) よりも優先順位が高いと定義されていますが、いくつかの例外があります。例えば、Bash では **
演算子は単項演算子よりも優先順位が低いと定義されています。
JavaScript では、あいまいなべき乗式を記述することはできません。 つまり、基数の直前に単項演算子 (+/-/~/!/delete/void/typeof
) を置くことはできません。 これを行うと、SyntaxError が発生します。
js
-2 ** 2;
// Bashでは 4 他の言語では -4
// JavaScript では演算があいまいなため無効
-(2 ** 2);
// JavaScript では意図が明白なため -4
注意: 一部のプログラミング言語ではべき乗計算にキャレット記号 ^ を使用していますが、JavaScript ではビット排他的論理和にこの記号を使用しています。
例
基本的なべき乗
js
2 ** 3; // 8
3 ** 2; // 9
3 ** 2.5; // 15.588457268119896
10 ** -1; // 0.1
NaN ** 2; // NaN
結合性
js
2 ** 3 ** 2; // 512
2 ** (3 ** 2); // 512
(2 ** 3) ** 2; // 64
単項演算子との使用
べき乗式の結果の符号を反転させる例です。
js
-(2 ** 2); // -4
べき乗式の基底を強制的に負の数にする例です。
js
(-2) ** 2; // 4
仕様書
Specification |
---|
ECMAScript Language Specification # sec-exp-operator |
ブラウザーの互換性
BCD tables only load in the browser