面试题答案
一键面试- 优化后的代码:
let a = true; let b = false; let c = true; if (a && (b || c)) { console.log('Some condition met'); }
- 优化思路:
- 原始表达式
(a && b) || (a && c) || (!a && b)
中,分析每一项。 - 首先看
(a && b)
和(a && c)
,这两项都有a
,根据逻辑运算的分配律A && B + A && C = A && (B + C)
(这里&&
相当于乘法,||
相当于加法),可以将这两项合并为a && (b || c)
。 - 再看
(!a && b)
这一项,因为a
为true
时,!a
为false
,那么(!a && b)
永远为false
,所以可以直接去掉这一项。最终优化为a && (b || c)
,这样逻辑更简洁,在运行时也会更高效,因为减少了不必要的判断。
- 原始表达式