&&在短路逻辑中是否与if子句中的相同?

时间:2019-03-23 03:12:48

标签: javascript

逻辑和运算符(&&)或逻辑或运算符(||)在“ if子句”中是否具有与短路逻辑中相同的功能?

例如,短路的&&应该返回第一个虚假值,否则,如果没有找到,则返回最后一个值:例如0 && 1返回1。但是,如果是这样,它如何在if子句中工作?

if (false && 1)

不会运行是因为两个条件都不成立,但是短路似乎表明它将返回1,在这种情况下1是真实值,并且if子句应该通过?

编辑:我的错误,我混淆了&&和||在短路。它们与条件句的作用相同

2 个答案:

答案 0 :(得分:2)

  

f(thing, n);短路时应返回第一个假值,否则将返回最后一个值

正确。

  

例如&&返回0 && 1

不。 1返回第一个虚假值0 && 1

  

0无法运行,因为两个条件都不成立

正确。 if (false && 1)返回第一个虚假值false && 1。由于false为假,因此if语句不会运行。

  

但是短路似乎表明它将返回1,在这种情况下1是真实值,而if子句应该通过?

不。如您所说,它返回第一个虚假值false。后面任何条款的价值都无关紧要:false的效果也一样。

答案 1 :(得分:0)

短路逻辑与if陈述逻辑的工作原理相同–确实没有区别,它们只是有条件的:

console.log(0 && 1);
if (0 && 1) console.log("0 && 1");
console.log(false && 1);
if (false && 1) console.log("false && 1");