--- title: べき乗 (**) slug: Web/JavaScript/Reference/Operators/Exponentiation tags: - JavaScript - Language feature - Operator - Reference translation_of: Web/JavaScript/Reference/Operators/Exponentiation ---
べき乗演算子 (**
) は、1番目のオペランドを2番目のオペランドの累乗まで上げた結果を返します。これは Math.pow
と同等ですが、オペランドとして BigInt も受け入れます。
Operator: var1 ** var2
べき乗演算子は右結合的です: a ** b ** c
は a ** (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
仕様書 |
---|
{{SpecName('ESDraft', '#sec-exp-operator', 'Exponentiation operator')}} |
{{Compat("javascript.operators.exponentiation")}}