運算子優先序
運算子優先序(Operator precedence)決定了運算子彼此之間被語法解析的方式,優先序較高的運算子會成為優先序較低運算子的運算元(operands)。
嘗試一下
相依性(Associativity)
當優先序相同時,使用相依性決定運算方向。範例如下:
a OP b OP c
左相依性 (Left-associativity) ,表示處理順序為從左至右 (a OP b) OP c
,反之,右相依性(right-associativity) 表示處理順序為從右至左 a OP (b OP c)
。賦值運算符 (Assignment operators) 為右相依性,範例如下:
a = b = 5;
a
和 b
的預期結果為 5,因為賦值運算符 (Assignment operator) 為右相依性,因此從右至左返回值。一開始 b
被設定為 5,接著 a
也被設定為 5。
表格(Table)
下方表格列出運算子的相依性,從高 (19) 到低 (1)。
優先性 Precedence |
運算子名稱 Operator type |
相依性 Associativity |
運算子 Individual operators |
---|---|---|---|
19 | Grouping (en-US) | 無 | ( … ) |
18 | Member Access (en-US) | 從左至右 | … . … |
Computed Member Access (en-US) | 從左至右 | … [ … ] |
|
new (with argument list) |
無 | new … ( … ) |
|
呼叫函式 | 從左至右 | … ( … ) |
|
可選串連(Optional chaining) | 從左至右 | ?. |
|
17 | new (without argument list) |
從右至左 | new … |
16 | 字尾遞增 | 無 | … ++ |
字尾遞減 | … -- |
||
15 | Logical NOT (en-US) | 從右至左 | ! … |
Bitwise NOT (en-US) | ~ … |
||
Unary Plus | + … |
||
Unary Negation | - … |
||
字首遞增 | ++ … |
||
字首遞減 | -- … |
||
typeof |
typeof … |
||
void (en-US) |
void … |
||
delete |
delete … |
||
await |
await … |
||
14 | Exponentiation | 從右至左 | … ** … |
13 | Multiplication | 從左至右 | … * … |
Division | … / … |
||
Remainder | … % … |
||
12 | Addition | 從左至右 | … + … |
Subtraction | … - … |
||
11 | Bitwise Left Shift (en-US) | 從左至右 | … << … |
Bitwise Right Shift (en-US) | … >> … |
||
Bitwise Unsigned Right Shift (en-US) | … >>> … |
||
10 | Less Than (en-US) | 從左至右 | … < … |
Less Than Or Equal (en-US) | … <= … |
||
Greater Than (en-US) | … > … |
||
Greater Than Or Equal (en-US) | … >= … |
||
in (en-US) |
… in … |
||
instanceof (en-US) |
… instanceof … |
||
9 | Equality (en-US) | 從左至右 | … == … |
Inequality (en-US) | … != … |
||
Strict Equality (en-US) | … === … |
||
Strict Inequality (en-US) | … !== … |
||
8 | Bitwise AND (en-US) | 從左至右 | … & … |
7 | Bitwise XOR (en-US) | 從左至右 | … ^ … |
6 | Bitwise OR (en-US) | 從左至右 | … | … |
5 | Logical AND (en-US) | 從左至右 | … && … |
4 | Logical OR (en-US) | 從左至右 | … || … |
Nullish Coalescing (en-US) | 從左至右 | … ?? … |
|
3 | 條件運算 | 從右至左 | … ? … : … |
2 | 賦值 | 從右至左 | … = … |
… += … |
|||
… -= … |
|||
… **= … |
|||
… *= … |
|||
… /= … |
|||
… %= … |
|||
… <<= … |
|||
… >>= … |
|||
… >>>= … |
|||
… &= … |
|||
… ^= … |
|||
… |= … |
|||
… &&= … |
|||
… ||= … |
|||
… ??= … |
|||
1 | Comma / Sequence | 從左至右 | … , … |