&& 可以应用于任何类型的操作数,不只是布尔值(短路操作)
1.如果第一个操作数是对象,则返回第二个操作数
2.如果第二个数是对象,则只有第一个操作数的求值结果为true时才会返回该操作数。
3.如果两个操作数都是对象,则返回第二个操作数
4.如果有一个操作数是null/NaN/undefined,则返回他们自己
ps: 先看&&前的内容转换为布尔值是否为真,若为真,往后看&&后面的内容转换为布尔值的结果。
如果只有两个表达式,如果第一个表达式为真,则返回第二个表达式;
如果第一个表达式为假,则直接返回第一个表达式的值。
&&属于短路操作:
即如果第一个值能够决定结果,就不对第二个操作数求值。如果第一个值为false,那么无论第二个操作数为啥,都不对他求值了,直接返回第一个操作数
||也是短路运算符
如果第一个操作符的值为true,则不对第二个操作数求值了