運算子優先順序
運算子優先順序 (Operator Precedence) 是 JScript 中的一組規則,當評估運算式時,用來控制編譯器執行作業的順序。 擁有較高優先順序的作業會在擁有較低優先順序的作業之前執行。 例如,乘法會在加法之前執行。
優先順序圖表
以下表格列出 JScript 運算子,並將它們從最高優先順序排到最低優先順序。
優先順序 |
評估順序 |
運算子 |
說明 |
---|---|---|---|
15 |
由左至右 |
., [], () |
欄位存取、陣列索引、函式呼叫和運算式群組 |
14 |
由右至左 |
++, --, -, ~, !, delete, new, typeof, void |
一元運算子、傳回資料型別、物件建立、未定義的值 |
13 |
由左至右 |
*, /, % |
乘法、除法、modulo 除法 |
12 |
由左至右 |
+, - |
加法和字串串連、減法 |
11 |
由左至右 |
<<, >>, >>> |
位元移位 |
10 |
由左至右 |
<, <=, >, >=, instanceof |
小於、小於或等於、大於、大於或等於、instanceof |
9 |
由左至右 |
==, !=, ===, !== |
等號比較、不等比較、嚴格等號比較和嚴格不等比較 |
8 |
由左至右 |
& |
位元 AND |
7 |
由左至右 |
^ |
位元 XOR |
6 |
由左至右 |
| |
位元 OR |
5 |
由左至右 |
&& |
邏輯 AND |
4 |
由左至右 |
|| |
邏輯 OR |
3 |
由右至左 |
?: |
條件式 |
2 |
由右至左 |
=, OP= |
指派、複合指派 |
1 |
由左至右 |
, (逗號) |
多重評估 |
運算式中的括號是用來改變以運算子優先順序來決定的評估順序。 這表示在運算式的其餘部分使用這個值之前,會先完整評估括號內的運算式。
例如:
z = 78 * (96 - 3 + 45)
在前一個運算式中有五個運算子:=、*、()、-、和 +。 根據運算子優先順序的規則,它們的評估順序如下:()、-、+、*、=。
括號內運算式的評估最早發生。 在括號內,有一個加法運算子和一個減法運算子。 因為這兩個運算子的優先順序相同,所以會由左至右來評估它們。 96 會先減去 3,結果為 93。 然後再將 93 加上 45,結果值為 138。
接下來是乘法。 138 乘以數字 78,結果值為 10764。
最後進行指派。 指派數字 10764 給 z。