运算符优先级,从上到下依次减低
运算符 |
描述 |
. [] () |
字段访问、数组下标、函数调用以及表达式分组 |
++ – - ~ ! delete new typeof void |
一元运算符、返回数据类型、对象创建、未定义值 |
* / % |
乘法、除法、取模 |
+ - + |
加法、减法、字符串连接 |
<< >> >>> |
移位 |
< <= > >= instanceof |
小于、小于等于、大于、大于等于、instanceof |
== != === !== |
等于、不等于、严格相等、非严格相等 |
& |
按位与 |
^ |
按位异或 |
| |
按位或 |
&& |
逻辑与 |
|| |
逻辑或 |
?: |
条件 |
= oP= |
赋值、运算赋值 |
, |
多重求值 |
MDN更详细的优先级
还有一些影响运算结果(左右关联)的因素,参考你不知道的JavaScript中卷 128页左右
运算符左右关联
左关联
&&
和 ||
1 2
| a && b && c (a && b) && c
|
右关联
三元运算符 和 =
1 2 3
| a ? b : c ? d : e;
a ? b : (c ? d : e)
|
1 2
| a && b || c ? c || b ? a : c && b : a; ((a && b) || c) ? ((c || b) ? a : (c && b)) : a
|