跳到主要内容

优先级与结合性

优先级与结合性分别解决什么问题?​

  • 优先级: 决定不同运算符的求值先后;
  • 结合性: 决定相同优先级运算符的求值方向;
  • 提升优先级: 用括号显式分组, 比记忆表格更可靠;

各类运算符的优先级与结合性是什么?​

运算符类型运算符结合性
成员访问. []从左到右
调用/实例化() new从左到右
一元! ~ - + ++ -- typeof void delete从右到左
幂**从右到左
乘除* / %从左到右
加减+ -从左到右
位移<< >> >>>从左到右
关系< <= > >= in instanceof从左到右
判等== != === !==从左到右
位运算& ^ |从左到右
逻辑&& ||从左到右
条件?:从右到左
赋值= += -= **= *= /= %= <<= >>= >>>= &= ^= |= &&= ||= ??=从右到左
逗号,从左到右
1 + 2 * 3; // 7; 乘优先于加
2 ** (3 ** 2); // 512; 幂从右到左
(1 + 2) * 3; // 9