Javascript&&运算符与嵌套if语句:什么更快?

时间:2010-06-27 02:46:18

标签: javascript performance conditional-operator

现在,在你们全都跳过我并说“你们过分关注表现”之前,请说明我更多地出于好奇而不是过分夸大的性质。那说......

我很好奇是否使用&&和(“和”)运算符和嵌套的if语句。此外,是否存在实际的处理差异?即,&& 总是处理两个语句,如果第一个语句失败,它会停止@第一个语句吗?这与嵌套的if语句有什么不同?

要明确的例子:

A)&& (“和”)运算符

if(a == b && c == d) { ...perform some code fashizzle... }

与B)嵌套if语句

if(a == b) {
    if(c == d) { ...perform some code fashizzle... }
}

4 个答案:

答案 0 :(得分:30)

性能差异可以忽略不计。当左手表达式评估&&时,false运算符不会检查右手表达式。但是,&运算符会检查两者,可能是因为这个事实引起的混淆。

在这个特定的例子中,我只选择使用&&的那个,因为它更易读。

答案 1 :(得分:12)

如果您担心效果,请确保a==bc==d更有可能失败。这样if语句就会提前失败。

答案 2 :(得分:3)

性能测试可能有助于解决问题:http://jsperf.com/simey-if-vs-if

似乎两者之间的性能差异令人难以置信;然而正如@Gert提到的那样,早期失败确实改善了事情。

答案 3 :(得分:2)

与嵌套if一样,&&是懒惰的 如果a && b是真实的,表达式b将仅评估a

因此,这两种情况在功能和性能上都应完全相同。