如果陈述执行

Sam*_*mmy 3 javascript

给出以下代码片段:

if (condition1 && condition2) {
  // ACTION 1
} else if (!condition1) {
  // ACTION 2
} else {
  // ACTION 3
}
Run Code Online (Sandbox Code Playgroud)

如果以这种方式进行重组,是否会对性能产生影响:

if (condition1) {
  if (condtion2) {
    // ACTION 1
  } else {
    // ACTION 3
  }
} else {
  // ACTION 2
}
Run Code Online (Sandbox Code Playgroud)

Kar*_*ren 5

不可以,除非condition1包含某种繁重的方法调用,否则将被重复。如果是这样,最好先调用它,然后只比较结果以使其更易于阅读。

let condition1Result = condition1();
if (condition1Result && condition2) {
  // ACTION 1
} else if (!condition1Result) {
  // ACTION 2
} else {
  // ACTION 3
}
Run Code Online (Sandbox Code Playgroud)

仅比较两个值在几乎所有情况下对性能的影响都可以忽略不计,因此,专注于微优化代码的可读性始终是一个好主意。