学科分类
目录
JavaScript网页编程

运算符优先级

前面介绍了JavaScript的各种运算符,那么在对一些比较复杂的表达式进行运算时,首先要明确表达式中所有运算符参与运算的先后顺序,我们把这种顺序称作运算符的优先级。接下来通过表1列出JavaScript中运算符的优先级,表中运算符的优先级由上至下递减,表右部的第一个接表左部的最后一个。

表1 运算符优先级

结合方向 运算符 结合方向 运算符
() == != === !==
. [] new(有参数,无结合性) &
new(无参数) ^
++(后置) --(后置) |
! ~ -(负数) +(正数) ++(前置) --(前置) typeof void delete &&
** ||
* / % ?:
+ - = += = *= /= %= <<= >>= >>>= &= ^= |=
<< >> >>> ,
< <= > >= in instanceof

表1中,在同一单元格的运算符具有相同的优先级,左结合方向表示同级运算符的执行顺序为从左向右,右结合方向则表示执行顺序为从右向左。

从表1可以看出,圆括号“()”是优先级最高运算符,它可以提高圆括号内部运算符的优先级。且当表达式中有多个圆括号时,最内层圆括号中的表达式优先级最高。具体示例如下。

console.log(8 + 6 * 3);   // 输出结果:26

console.log((8 + 6) * 3);  // 输出结果:42

在上述示例中,表达式“8 + 6 * 3”按照运算符优先级的顺序,先执行乘法“*”,再执行加法“+”,因此结果为26。而加了圆括号的表达式“(8 + 6) * 3”的执行顺序是先执行圆括号内的加法“+”运算,再执行乘法,因此输出结果为42。

由此可见,为复杂的表达式适当地添加圆括号,可避免复杂的运算符优先级法则,让代码更为清楚,并且可以避免错误的发生。

点击此处
隐藏目录