If 语句性能

鉴于以下代码片段:


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

}


jeck猫
浏览 175回答 3
3回答

森林海

在第一种情况下,如果condition1是false,那么将会有一个短路操作,这基本上意味着您不需要检查condition2并完全跳过该块。而在第二种情况下,如果condition1是,您可以跳过两个块false。就性能而言,它不会有显着差异,因为它们只是比较。因此,您应该使用在您的特定上下文中更具可读性和直观性的任何形式。

临摹微笑

通常第一个比 if..else 嵌套块更清晰,并且是首选。此外,由于condition1 && condition短路操作导致性能不同。因此,如果第一个条件为假,则不会继续检查第二个条件。

鸿蒙传说

不,除非condition1包含某种繁重的方法调用,否则会重复。如果是这样,最好先调用它,然后比较结果以使其更易于阅读。let condition1Result = condition1();if (condition1Result && condition2) {  // ACTION 1} else if (!condition1Result) {  // ACTION 2} else {  // ACTION 3}在几乎所有场景中,仅比较两个值对性能的影响都可以忽略不计,因此关注微优化代码的可读性始终是一个好主意。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript