JavaScript/**
**
は、ECMAScript におけるべき乗演算子です。この演算子は、左側のオペランドを底(base)として、右側のオペランドを指数(exponent)として、底の指数乗を計算します。この演算子は、数学的な計算やアルゴリズムで頻繁に使用されます[1]。
構文
UpdateExpression[?Yield, ?Await] ** ExponentiationExpression[?Yield, ?Await]
UpdateExpression[?Yield, ?Await]
: べき乗の底となる値。ExponentiationExpression[?Yield, ?Await]
: べき乗の指数となる値。
この演算子は、以下のように使用されます:
let result = 2 ** 3; // 8 (2の3乗)
動作
べき乗演算子 (**
) は、以下のように動作します:
- 底を評価する: 左側のオペランドを評価して底を得ます。
- 指数を評価する: 右側のオペランドを評価して指数を得ます。
- べき乗を計算する: 底の指数乗を計算して結果を返します。
結合性
べき乗演算子 (**
) は、右結合性を持ちます。つまり、複数のべき乗演算子が連続して現れる場合、右側から左側へと評価されます。
2 ** 3 ** 2; // 2 ** (3 ** 2) = 2 ** 9 = 512
この例では、最初に 3 ** 2
が計算され(結果は9)、その後 2 ** 9
が計算されます(結果は512)。
例
基本的な使用法
以下のプログラムは、べき乗演算子の基本的な使用法を示しています。
// 基本的な使用法 let base = 2; let exponent = 3; let result = base ** exponent; console.log(result); // 8
このプログラムでは、2
の 3
乗が計算され、結果として 8
が得られます。
負の指数
以下のプログラムは、負の指数を使用する例を示しています。
// 負の指数 let result = 2 ** -3; console.log(result); // 0.125 (1/8)
このプログラムでは、2
の -3
乗が計算され、結果として 0.125
(1/8
)が得られます。
小数の指数
以下のプログラムは、小数の指数を使用する例を示しています。
// 小数の指数 let result = 4 ** 0.5; console.log(result); // 2 (4の平方根)
このプログラムでは、4
の 0.5
乗(4の平方根)が計算され、結果として 2
が得られます。
変数との組み合わせ
以下のプログラムは、べき乗演算子を変数と組み合わせて使用する例を示しています。
// 変数との組み合わせ let x = 3; x **= 2; // x = x ** 2 console.log(x); // 9
このプログラムでは、x **= 2
という代入演算子の組み合わせを使用して、x
の値を x
の 2
乗で更新しています。
複雑な計算
以下のプログラムは、べき乗演算子を使用してより複雑な計算を行う例を示しています。
// 複雑な計算 let a = 2; let b = 3; let c = 4; // (a^b)^c と a^(b*c) は異なる let result1 = (a ** b) ** c; // (2^3)^4 = 8^4 = 4096 let result2 = a ** (b * c); // 2^(3*4) = 2^12 = 4096 console.log(result1); // 4096 console.log(result2); // 4096 // 優先順位の例 let result3 = 2 ** 3 * 4; // (2^3) * 4 = 8 * 4 = 32 let result4 = 2 ** (3 * 4); // 2^12 = 4096 console.log(result3); // 32 console.log(result4); // 4096
このプログラムでは、べき乗演算子の結合性と優先順位を示す複数の例を提示しています。
注意点
Math.pow() との比較
べき乗演算子 (**
) と Math.pow()
メソッドは、同じ機能を提供しますが、使用方法が異なります:
// べき乗演算子を使用 let result1 = 2 ** 3; // 8 // Math.pow() を使用 let result2 = Math.pow(2, 3); // 8
べき乗演算子は、通常、Math.pow()
よりも簡潔で読みやすいコードを書くことができます。
脚註
- ↑ べき乗演算子は、ECMAScript 2016(ES7)で導入されました。それ以前は、
Math.pow()
メソッドを使用してべき乗計算を行っていました。