指數運算子(**)
指數運算子(**
)會回傳以第一個數字作為底數;第二個數字做為指數的運算結果。
它類同於 Math.pow
,不一樣的是 **
可以用於 BigInt 的計算而 Math.pow
不行。
嘗試一下
語法
js
x ** y
簡介
指數運算子是 right-associative: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 ,^ 則是用於XOR 位元邏輯運算子.
範例
指數的基本運算
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