如何优化IF语句中的布尔判断条件 确保t2在t1执行完成后运行
现有代码行为确认
你给出的原始代码本身已经满足「t2必须在t1执行完成后再运行」的要求:JavaScript 异步上下文是顺序执行的,await 会阻塞当前上下文后续代码的执行,只要第一个if分支触发了t1()执行,一定会等待t1()完成后才会进入第二个if的判断逻辑,不存在t2抢在t1之前执行的情况。
优化方案
现有代码的唯一冗余点是对b的两次判断,如果b是需要计算的表达式而非普通变量,会产生额外的计算开销,可以按以下方案优化:
方案1:提取公共条件变量(推荐,可读性最高)
提前把需要复用的判断结果存为变量,避免重复计算:
// 如果b是复杂表达式,这里只会计算一次 const conditionB = b; if (a && (conditionB || c)) { await t1(); } if (conditionB) { await t2(); }
方案2:合并逻辑分支(适合需要减少分支数量的场景)
如果希望减少顶层分支数,也可以合并判断逻辑,注意不要为了合并强行降低可读性:
const conditionB = b; if (a && (conditionB || c)) { await t1(); if (conditionB) { await t2(); } } else if (conditionB) { await t2(); }
额外说明
如果b只是普通的布尔变量,没有额外的计算成本,原始代码的可读性是最优的,不需要强行做结构调整。
内容的提问来源于stack exchange,提问作者Aion
相关产品推荐
相关产品推荐

