&&如何遇到falsy,那么整个表达式都是遇到的这个falsy值;如何整个表达式是truthy,结果返回最后一个值;
var a = 0 && 1;//a = 0
var a = 1 && false;//a = false
var a = 1 && 2 && true;//a = true;
||如果遇到truthy,那么整个表达式都是这个truthy值;如果整个表达式都是falsy,那么整个表达式的值是最后一个值;
var a = 0 || 1;// a = 1
var a = 1 || false;//a = 1;
var a = 0 || false;// a = false
var a = false || 0;//a = 0
注意一个特殊例子:
var obj1 = new Boolean(false);//typeof obj1 ==> 'object'
var obj2 = (obj1 && true);
var obj3 = (true && obj1);相当于(true && object)
var obj4 = Boolean(obj1 && true);
var obj5 = Boolean(true && obj1);
//obj2 = true; obj3 = Boolean {false}; obj4 = true; obj5 = true;