首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有多个条件的javascript if语句会测试所有条件吗?

有多个条件的javascript if语句会测试所有条件吗?
EN

Stack Overflow用户
提问于 2009-12-19 04:26:44
回答 9查看 105.5K关注 0票数 109

在javascript中,当使用带有多个条件的if语句进行测试时,javascript是否会不管怎样地全部测试它们,或者如果已经为false,它会在测试它们之前停止吗?

例如:

代码语言:javascript
复制
 a = 1
 b = 2
 c = 1

 if (a==1 && b==1 && c==1)

javascript是否会测试所有3个条件,或者在看到b不等于1并因此为false后,它会退出语句吗?

我从性能的角度来问。例如,如果我正在测试3个复杂的jQuery选择器,我不希望让jQuery遍历DOM 3次,如果通过第一个很明显,它将返回FALSE。(在这种情况下,嵌套3个if语句会更有意义)。

附录:更多的是好奇,这是什么合适的术语?我注意到你们中的许多人使用“短路”这个术语。另外,是不是有些语言可以做到这一点,而另一些语言则不能呢?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-12-19 04:28:33

&&操作符“短路”--也就是说,如果左边的条件是假的,它就不会费心计算右边的条件。

类似地,如果左条件为真,则||操作符短路。

编辑:不过,在您对性能进行基准测试并确定这是一个问题之前,您不应该担心性能。过早的微优化是可维护性的祸根。

票数 163
EN

Stack Overflow用户

发布于 2009-12-19 05:21:16

从性能的角度来看,这不是微优化。

如果我们有3个布尔变量,a,b,c,那就是微优化。

如果我们调用3个返回布尔变量的函数,每个函数可能会花费很长时间,而且不仅要知道这种短路,而且要知道这种短路的顺序。例如:

代码语言:javascript
复制
if (takesSeconds() && takesMinutes())

远好于

代码语言:javascript
复制
if (takesMinutes() && takesSeconds())

如果两者都同样有可能返回false。

票数 14
EN

Stack Overflow用户

发布于 2009-12-19 04:32:56

这就是为什么你可以在javascript代码中这样做的原因

代码语言:javascript
复制
var x = x || 2;

这将意味着如果x是未定义的或否则为'false‘,则缺省值为2。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1930499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档