逻辑与(&&)优先级高于逻辑或(||),因javascript运算符优先级规定! > && > ||,故混合表达式如a || b && c等价于a || (b && c),需加括号明确意图以防误判。

逻辑与(&&)的优先级高于逻辑或(||)。
为什么 && 比 || 优先级高
在 JavaScript 运算符优先级表中,!(逻辑非)最高,其次是 &&,最后才是 ||。这意味着当表达式中同时出现 && 和 || 时,引擎会先计算 && 部分,再处理 ||。
- 例如:
console.log(true || false && false);等价于true || (false && false),结果是 true - 而
false && true || true实际执行顺序是(false && true) || true,结果是 true - 如果不加括号依赖默认优先级,容易误判执行逻辑,尤其在条件赋值或链式判断中
常见误用场景
开发者常以为 a || b && c 是从左到右执行,但实际是先算 b && c,再和 a 做 ||。这可能导致预期外的返回值。
-
0 || 1 && 2→ 先算1 && 2得2,再算0 || 2→ 结果是 2 - 想表达“a 为假时取 b,否则取 c”,应写成
a ? b : c或显式加括号:(a || b) && c要按需调整
如何避免混淆
最稳妥的方式是主动使用小括号明确意图,而不是依赖记忆优先级。
- 需要先或后与:写成
(a || b) && c - 需要先与后或:写成
a && b || c(此时无需括号,但建议仍加上以提升可读性) - 复杂条件建议拆解为变量或使用 if/else,比嵌套逻辑运算符更清晰
不复杂但容易忽略。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











