优先级与结合性
优先级与结合性分别解决什么问题?
- 优先级: 决定不同运算符的求值先后;
- 结合性: 决定相同优先级运算符的求值方向;
- 提升优先级: 用括号显式分组, 比记忆表格更可靠;
各类运算符的优先级与结合性是什么?
| 运算符类型 | 运算符 | 结合性 |
|---|---|---|
| 成员访问 | . [] | 从左到右 |
| 调用/实例化 | () new | 从左到右 |
| 一元 | ! ~ - + ++ -- typeof void delete | 从右到左 |
| 幂 | ** | 从右到左 |
| 乘除 | * / % | 从左到右 |
| 加减 | + - | 从左到右 |
| 位移 | << >> >>> | 从左到右 |
| 关系 | < <= > >= in instanceof | 从左到右 |
| 判等 | == != === !== | 从左到右 |
| 位运算 | & ^ | | 从左到右 |
| 逻辑 | && || | 从左到右 |
| 条件 | ?: | 从右到左 |
| 赋值 | = += -= **= *= /= %= <<= >>= >>>= &= ^= |= &&= ||= ??= | 从右到左 |
| 逗号 | , | 从左到右 |
1 + 2 * 3; // 7; 乘优先于加
2 ** (3 ** 2); // 512; 幂从右到左
(1 + 2) * 3; // 9