Skip to content

Latest commit

 

History

History
466 lines (454 loc) · 11.6 KB

File metadata and controls

466 lines (454 loc) · 11.6 KB
title slug
運算子優先序
Web/JavaScript/Reference/Operators/Operator_precedence

{{jsSidebar("Operators")}}

運算子優先序(Operator precedence)決定了運算子彼此之間被語法解析的方式,優先序較高的運算子會成為優先序較低運算子的運算元(operands)。

{{EmbedInteractiveExample("pages/js/expressions-operatorprecedence.html")}}

相依性(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;

ab 的預期結果為 5,因為賦值運算符 (Assignment operator) 為右相依性,因此從右至左返回值。一開始 b 被設定為 5,接著 a 也被設定為 5。

表格(Table)

下方表格列出運算子的相依性,從高 (19) 到低 (1)。

優先性
Precedence
運算子名稱
Operator type
相依性
Associativity
運算子
Individual operators
19 {{jsxref("Operators/Grouping", "Grouping", "", 1)}} ( … )
18 {{jsxref("Operators/Property_Accessors", "Member Access", "#dot_notation", 1)}} 從左至右 … . …
{{jsxref("Operators/Property_Accessors", "Computed Member Access", "#bracket_notation", 1)}} 從左至右 … [ … ]
{{jsxref("Operators/new","new")}} (with argument list) new … ( … )
呼叫函式 從左至右 … ( )
可選串連(Optional chaining) 從左至右 ?.
17 {{jsxref("Operators/new","new")}} (without argument list) 從右至左 new …
16 {{jsxref("Operators","字尾遞增","#遞增與遞減", 1)}} … ++
{{jsxref("Operators","字尾遞減","#遞增與遞減", 1)}} … --
15 Logical NOT 從右至左 ! …
Bitwise NOT ~ …
Unary Plus + …
Unary Negation - …
{{jsxref("Operators","字首遞增","#遞增與遞減", 1)}} ++ …
{{jsxref("Operators","字首遞減","#遞增與遞減", 1)}} -- …
{{jsxref("Operators/typeof", "typeof")}} typeof …
{{jsxref("Operators/void", "void")}} void …
{{jsxref("Operators/delete", "delete")}} delete …
{{jsxref("Operators/await", "await")}} await …
14 Exponentiation 從右至左 … ** …
13 Multiplication 從左至右 … * …
Division … / …
Remainder … % …
12 Addition 從左至右 … + …
Subtraction … - …
11 Bitwise Left Shift 從左至右 … << …
Bitwise Right Shift … >> …
Bitwise Unsigned Right Shift … >>> …
10 Less Than 從左至右 … < …
Less Than Or Equal … <= …
Greater Than … > …
Greater Than Or Equal … >= …
{{jsxref("Operators/in", "in")}} … in …
{{jsxref("Operators/instanceof", "instanceof")}} … instanceof …
9 Equality 從左至右 … == …
Inequality … != …
Strict Equality … === …
Strict Inequality … !== …
8 Bitwise AND 從左至右 … & …
7 Bitwise XOR 從左至右 … ^ …
6 Bitwise OR 從左至右 … | …
5 Logical AND 從左至右 … && …
4 Logical OR 從左至右 … || …
Nullish Coalescing 從左至右 … ?? …
3 條件運算 從右至左 … ? … : …
2 賦值 從右至左 … = …
… += …
… -= …
… **= …
… *= …
… /= …
… %= …
… <<= …
… >>= …
… >>>= …
… &= …
… ^= …
… |= …
… &&= …
… ||= …
… ??= …
1 Comma / Sequence 從左至右 … , …