【发布时间】:2010-12-28 04:19:13
【问题描述】:
在 javascript 中,当使用带有多个条件的 if 语句进行测试时,javascript 是否会测试所有条件,或者如果它已经为假,它会在测试所有条件之前放弃吗?
例如:
a = 1
b = 2
c = 1
if (a==1 && b==1 && c==1)
javascript 会测试所有这 3 个条件,还是在看到 b 不等于 1 并因此为假之后,它会退出语句吗?
我是从性能的角度来问的。例如,如果我正在测试 3 个复杂的 jQuery 选择器,我宁愿不要让 jQuery 遍历 DOM 3 次,如果通过第一个选择器很明显它会返回 FALSE。 (在这种情况下,嵌套 3 个 if 语句会更有意义)。
附录:更多的是好奇,这个的正确术语是什么?我注意到你们中的许多人使用“短路”一词。另外,有些语言会这样做而其他语言不会吗?
【问题讨论】:
-
@Josh:我完全理解这是微优化的想法。很高兴知道。也就是说,如果一个选项比另一个选项更优化,我认为了解并养成使用所述方法的习惯是件好事。 (另外,我也很好奇答案)
-
严格来说,这不是一个过早的优化。在具有短路逻辑的语言中,重要的是要知道在什么条件下某些方法不会被执行;例如,如果您依赖它们的副作用。
-
这里还有一个关于“短路评估”的问题:stackoverflow.com/questions/1232603/…
标签: javascript