js的短路

短路问题经常是发生在逻辑运算符中的逻辑与(&&)、逻辑或(||)

  1、逻辑或(||)

    他是一真则真,当逻辑或前面的表达式结果为1或true时,逻辑或后面的表达式是不会执行的

  2、逻辑与(&&)

    他是一假则假,当逻辑与前面的表达式结果为0或false时,逻辑与后面的表达式是不会执行的

  3、小知识点:当一个表达式中既有逻辑与,又有逻辑或,那么先执行逻辑与,逻辑与的优先级比逻辑或高

  用几个例子来说明一下

  var a=1,b=2,c="博客园";

  a || b && c="百度";

  console.log(c)

  解析:由于上面这个表达式中既有逻辑与,又有逻辑或,所以先执行逻辑与

  上面的表达式也就演变成了:a ||  (b && c="百度"); a=1,所以为true,那么遇到真了,后面的(b && c="百度")这个表达式就不会执行了,自然而然c="百度"这句话就不会执行,所以c="博客园"。

  那么如果(a || b) && c="百度"  

  console.log(c)

  解析:因为有了括号,所以先执行括号里的,a=1为true,根据逻辑与的短路,遇到真了后面的依然会继续执行,遇到假的后面才不会执行,所以就变成了 true && c="百度";所以c被重新赋值了,所以c="百度"

  

原文地址:https://www.cnblogs.com/white-bull/p/8086437.html