べき乗 (**)

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.

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

試してみましょう

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

構文

js
x ** y;

解説

べき乗演算子は右結合です。 a ** b ** ca ** (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® 2025 Language Specification
# sec-exp-operator

ブラウザーの互換性

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

関連情報