javascript if语句是否有多个条件测试所有这些条件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (26)

在javascript中,当使用带有多个条件的if语句进行测试时,javascript是否全部测试它们,还是在测试它们之前保留它们,如果它已经是错误的呢?

例如:

 a = 1
 b = 2
 c = 1

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

请问javascript会测试所有这三种情况,或者在看到b不等于1并且因此是假的后会退出该陈述吗?

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

附录:更多的好奇心,这个适当的术语是什么?我注意到你们许多人使用术语'短路'。另外,做一些语言做这个和其他人不?

提问于
用户回答回答于

&&运营商“短路” -也就是说,如果左边的条件是假的,它不打扰评估是正确的。

同样,||如果左侧条件成立,操作员会短路。

虽然,你不应该担心性能,直到你有基准,并确定这是一个问题。过早的微观优化是可维护性的祸根。

用户回答回答于

从性能角度来看,这不是一个微型优化。

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

如果我们调用返回布尔变量的3个函数,每个函数可能需要很长时间,不仅对于了解这些短路非常重要,而且以何种顺序。例如:

if(takesSeconds()&& takesMinutes())

比...好多了

if(takesMinutes()&& takesSeconds())

如果两者都有可能返回错误。

扫码关注云+社区