鉴于以下代码片段:if (condition1 && condition2) { // ACTION 1} else if (!condition1) { // ACTION 2} else { // ACTION 3}如果我以这种方式对其进行重组,它是否会对性能产生影响:if (condition1) { if (condtion2) { // ACTION 1 } else { // ACTION 3 }} else { // ACTION 2}
3 回答
森林海
TA贡献2011条经验 获得超2个赞
在第一种情况下,如果condition1
是false
,那么将会有一个短路操作,这基本上意味着您不需要检查condition2
并完全跳过该块。
而在第二种情况下,如果condition1
是,您可以跳过两个块false
。
就性能而言,它不会有显着差异,因为它们只是比较。因此,您应该使用在您的特定上下文中更具可读性和直观性的任何形式。
临摹微笑
TA贡献1982条经验 获得超2个赞
通常第一个比 if..else 嵌套块更清晰,并且是首选。
此外,由于condition1 && condition
短路操作导致性能不同。因此,如果第一个条件为假,则不会继续检查第二个条件。
鸿蒙传说
TA贡献1865条经验 获得超7个赞
不,除非condition1包含某种繁重的方法调用,否则会重复。如果是这样,最好先调用它,然后比较结果以使其更易于阅读。
let condition1Result = condition1();
if (condition1Result && condition2) {
// ACTION 1
} else if (!condition1Result) {
// ACTION 2
} else {
// ACTION 3
}
在几乎所有场景中,仅比较两个值对性能的影响都可以忽略不计,因此关注微优化代码的可读性始终是一个好主意。
添加回答
举报
0/150
提交
取消