0

这是一个非常简单的问题,但它可能对我们中的某些人非常有用。我一直在谷歌上寻找答案,但没有找到。我对浏览器如何读取 if/else 语句有疑问。简而言之,当条件为假时,浏览器是否只是忽略结果(即不读取它)还是浏览器先读取它然后它不执行代码?例如,当您有一个非常重的长循环代码时,差异是巨大的。谢谢!

4

1 回答 1

2

简而言之,它取决于用户代理,更具体地说,取决于它的 javascript 引擎。现代引擎非常聪明,可能会一起忽略它,特别是如果它可以推断出分支是死代码并且永远不会被执行。即,可以安全地忽略此代码:

if (false) {
  // Do a bunch of stuff
}

但是,即使没有,您也很可能需要在您的分支中使用大量代码才能真正在解析延迟方面产生影响。几行代码不会产生足够的差异来保证任何速度问题。

然而,与往常一样,在性能方面,测量确实是唯一重要的事情。人们会说各种各样的关于什么更快的事情,但没有证据这是没有意义的,所以如果你不确定哪个更快:测量它!根据 javascript 引擎的不同,您可能会得到非常不同的结果,因此最好还是采用这条路线而不是询问 StackOverflow,即使这一个非常聪明的社区。

查看jsperf以了解衡量不同用户代理之间差异的好方法。

于 2013-04-13T20:44:01.433 回答