表示されているページは、編集用 バージョンの MDN Web Docsです

MDN Web Docs のユーザーとして表示: https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Exponentiation

べき乗演算子 (**) は、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 の定義

ブラウザの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
Exponentiation (**)Chrome 完全対応 52Edge 完全対応 14Firefox 完全対応 52IE 未対応 なしOpera 完全対応 39Safari 完全対応 10.1WebView Android 完全対応 51Chrome Android 完全対応 52Firefox Android 完全対応 52Opera Android 完全対応 41Safari iOS 完全対応 10.3Samsung Internet Android 完全対応 6.0nodejs 完全対応 7.0.0
完全対応 7.0.0
完全対応 6.5.0
無効
無効 From version 6.5.0: this feature is behind the --harmony runtime flag.

凡例

完全対応  
完全対応
未対応  
未対応
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

関連情報

ドキュメントのタグと貢献者

このページの貢献者: mpcjazz
最終更新者: mpcjazz,