运算符优先级,从上到下依次减低
| 运算符 |
描述 |
| . [] () |
字段访问、数组下标、函数调用以及表达式分组 |
| ++ – - ~ ! 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
|