在 JavaScript 中,运算符优先级决定了表达式中运算符执行的顺序。当一个表达式中存在多个运算符时,根据优先级规则确定运算的顺序。以下是 JavaScript 中常见运算符的优先级,从高到低排列:
- 成员访问 (Member Access):
.
(点运算符)[]
(方括号运算符)
- 函数调用 (Function Call):
()
- 递增/递减 (Increment/Decrement):
++
,--
(前缀)++
,--
(后缀)
- 一元运算符 (Unary):
+
,-
(一元正号和负号)!
(逻辑非)typeof
void
delete
- 乘法/除法/求余 (Multiplication/Division/Remainder):
*
,/
,%
- 加法/减法 (Addition/Subtraction):
+
,-
- 关系运算符 (Relational):
<
,<=
,>
,>=
,instanceof
,in
- 相等运算符 (Equality):
==
,!=
,===
,!==
- 按位与 (Bitwise AND):
&
- 按位异或 (Bitwise XOR):
^
- 按位或 (Bitwise OR):
|
- 逻辑与 (Logical AND):
&&
- 逻辑或 (Logical OR):
||
- 条件运算符 (Conditional):
? :
- 赋值运算符 (Assignment):
=
,+=
,-=
,*=
,/=
,%=
,<<=
,>>=
,>>>=
,&=
,^=
,|=
- 逗号 (Comma):
,
优先级高的运算符先被计算,优先级低的运算符后被计算。如果有相同优先级的运算符,则根据结合性(从左到右或从右到左)进行计算。可以使用括号来改变运算符的优先级。
JavaScript的结合性
JavaScript 中的运算符具有不同的结合性,结合性决定了相同优先级的运算符在表达式中如何组合。JavaScript 中的大多数运算符都是从左向右结合的,这意味着具有相同优先级的运算符将从左到右依次执行。然而,也有一些特殊情况,例如赋值运算符和三元条件运算符具有右结合性。
以下是 JavaScript 中常见运算符的结合性:
- 左结合性:
- 大多数运算符都是左结合的,例如加法运算符
+
、逻辑与运算符&&
、逻辑或运算符||
等。 - 左结合性表示具有相同优先级的运算符将从左到右依次执行,例如
a + b + c
中,先执行a + b
,然后再与c
相加。
- 右结合性:
- 一些运算符具有右结合性,例如赋值运算符
=
、三元条件运算符? :
等。 - 右结合性表示具有相同优先级的运算符将从右到左依次执行,例如
a = b = c
中,先执行b = c
,然后再执行a = b
。
- 无结合性:
- 一些运算符没有结合性,例如逗号运算符
,
。 - 无结合性表示运算符不能被连续使用,每个运算符都需要与其他运算符分开处理。
了解运算符的结合性对于正确理解和编写复杂表达式非常重要,可以通过结合使用括号来明确表达式的执行顺序。