如果/ else语句,浏览器如何真正读取?

时间:2013-04-13 20:28:43

标签: javascript if-statement

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

1 个答案:

答案 0 :(得分:2)

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

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

然而即使它没有,你的分支中很可能需要相当大量的代码才能真正改变解析延迟。几行不会产生足够的差异以保证任何速度问题。

然而,就性能而言,测量确实是唯一重要的事情。人们会说更快速的各种不同的东西,但没有证据就没有意义,所以如果你不确定哪个更快:测量它!根据javascript引擎的不同,你可能得到非常不同的结果,所以无论如何最好采用这条路线而不是问StackOverflow,即使这个 是一个非常聪明的社区。

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