现在,在你们全都跳过我并说“你们过分关注表现”之前,请说明我更多地出于好奇而不是过分夸大的性质。那说......
我很好奇是否使用&&和(“和”)运算符和嵌套的if语句。此外,是否存在实际的处理差异?即,&& 总是处理两个语句,如果第一个语句失败,它会停止@第一个语句吗?这与嵌套的if语句有什么不同?
要明确的例子:
A)&& (“和”)运算符
if(a == b && c == d) { ...perform some code fashizzle... }
与B)嵌套if语句
if(a == b) {
if(c == d) { ...perform some code fashizzle... }
}
答案 0 :(得分:30)
性能差异可以忽略不计。当左手表达式评估&&
时,false
运算符不会检查右手表达式。但是,&
运算符会检查两者,可能是因为这个事实引起的混淆。
在这个特定的例子中,我只选择使用&&
的那个,因为它更易读。
答案 1 :(得分:12)
如果您担心效果,请确保a==b
比c==d
更有可能失败。这样if
语句就会提前失败。
答案 2 :(得分:3)
性能测试可能有助于解决问题:http://jsperf.com/simey-if-vs-if
似乎两者之间的性能差异令人难以置信;然而正如@Gert提到的那样,早期失败确实改善了事情。
答案 3 :(得分:2)
与嵌套if
一样,&&
是懒惰的
如果a && b
是真实的,表达式b
将仅评估a
。
因此,这两种情况在功能和性能上都应完全相同。