JavaScript复合表达式计算顺序由运算符优先级和结合性共同决定:优先级高者先结合,同级按结合方向(多数左→右,赋值/逻辑运算等右→左)执行。

JavaScript 中复合表达式的计算顺序,由运算符优先级和结合性共同决定。优先级高的运算符先执行,同级则看结合方向——多数从左到右,但赋值、逻辑与(&&)、逻辑或(||)等是从右到左。
优先级决定谁先“绑定”操作数
运算符优先级本质上是规定“哪个运算符先跟它的操作数结合”。比如 3 + 5 * 2 中,* 优先级高于 +,所以 5 * 2 先结合并计算,再与 3 相加,结果是 13,不是 16。
- 括号 () 优先级最高,可强制改变默认绑定顺序
- 一元运算符(如 !、++、-)紧随其后,比二元运算符更早参与结合
- 算术运算中,**(幂)> *、/、% > +、-
- 比较和相等运算符(>=、=== 等)优先级低于算术运算,高于逻辑运算
- && 优先级高于 ||,所以 null || 2 && 3 || 4 等价于 null || (2 && 3) || 4
结合性解决同级运算符的顺序
当多个同优先级运算符连续出现时,结合性决定计算方向:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- +、-、*、/ 等从左到右:如 10 - 3 - 2 → (10 - 3) - 2 = 5
- =、&&、||、? : 从右到左:如 a = b = 5 → a = (b = 5),使 b 和 a 都得 5
- 注意:短路逻辑本身不改变结合性,但影响实际执行——false && console.log(1) || true 中,&& 先算且短路,console.log(1) 不执行
常见易错点与实用建议
很多 bug 源于对隐含优先级的误判,尤其在混合逻辑、算术和比较时:
立即学习“Java免费学习笔记(深入)”;
- 别依赖 && 和 || 的默认优先级写长链式判断,如 a > 0 || b < 5 && c === 1 易读错;加括号更安全:(a > 0) || (b < 5 && c === 1)
- + 有双重身份:数值相加 or 字符串拼接。遇到 1 + 2 + "3",按左结合性先算 1 + 2 = 3,再 3 + "3" = "33";而 1 + "2" + 3 则是 "12" + 3 = "123"
- 位运算符(&、|、^)优先级低于比较运算符,a & b === c 实际是 a & (b === c),通常应写成 (a & b) === c
- 用浏览器控制台快速验证:输入表达式(如 false || true && false),直接看返回值,比查表更快定位结合行为
记住关键层级,不必死记全部
日常开发中,掌握以下五层足够应对绝大多数场景:
- () → 最高,一切以它为准
- ++ -- ! + - typeof → 一元操作,常用于条件准备
- * / % ** → 算术核心,先乘除后加减
- < > <= >= == != === !== → 比较结果为布尔值,但本身不“短路”
- && || ?? → 逻辑组合,&& 先于 ||,?? 与 && 同级但语义不同

















