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