在javascript中,当使用带有多个条件的if语句进行测试时,javascript是否会全部测试它们,或者如果已经为false,则在测试所有条件之前会保全吗?
例如:
a = 1 b = 2 c = 1 if (a==1 && b==1 && c==1)
javascript将测试所有这三个条件,还是在看到b不等于1并因此为false之后,将退出该语句?
我从性能的角度出发。例如,如果我正在测试3个复杂的jQuery选择器,那么我不希望jQuery遍历DOM 3次(如果通过第一个可以看出,它将返回FALSE)。(在这种情况下,嵌套3个if语句会更有意义)。
附录:出于好奇,这的恰当用语是什么?我注意到许多人使用“短路”一词。另外,某些语言会这样做吗,而其他语言不会吗?
该&&运营商“短路” -也就是说,如果左边的条件是假的,它不打扰评估是正确的。
&&
同样,||如果左侧条件为真,则操作员会短路。
||
编辑:不过,在进行基准测试并确定这是一个问题之前,您不必担心性能。过早的微观优化是可维护性的祸根。