在JavaScript中,&& 和||不仅用于 boolean 类型也用于对象。
&&:
-
如果&&左侧是为 false ,那么直接返回 false。
console.log(false&&true);//false
console.log(false&&“abc”);//false
统统直接返回false。 -
如果&&左侧为 true,则执行&&右边的语句,并返回右边语句的返回值。
console.log(true&&“abc”);//abc
console.log(true&&false);//false
console.log(true&&(1+2));//3 -
如果&&左右两边的返回值都是 object 类型(不是boolean类型),则返回第二个对象。
console.log(“abc”&&“def”);//def
console.log(1+1&&10+11);//21 -
如果&&左右任何一边是 NaN,则返回 NaN。
console.log(NaN&&true);//NaN
console.log(NaN&&“abc”);//NaN -
如果&&左右任何一边是 null,则返回 null。
console.log(null&&true);//null
console.log(null&&“abc”);//null -
如果&&左右任何一边是 undefinded,则返回 undefined。
console.log(undefinded&&true);//undefinded
console.log(undefinded&&“abc”);//undefinded -
如果null,NaN,undefined同时出现(两个或三个),谁在&&左边返回谁。
console.log(null&&NaN&&undefined);//null
console.log(NaN&&null&&undefined);//NaN
console.log(undefined&&NaN&&null);//undefined
||:
-
如果||左侧为 true, 则直接返回 true。
console.log(true||“abc”);//true
console.log(true||false);//true -
如果||左侧为 false,则执行||右边的语句,并返回右边语句的返回值。
console.log(false||true);//true
console.log(false||“abc”);//abc
console.log(false||(1+2));//3 -
如果&&左右两边的返回值都是 object 类型(不是boolean类型),则返回第一个对象。
console.log(“abc”||“def”);//abc
console.log(1+1||10+11);//2 -
如果||左右两边都是 null,则返回 null,否则返回另一个对象。
console.log(null||null);//null
console.log(null||“abc”);//abc -
如果||左右两边都是 NaN,则返回 NaN,否则返回另一个对象。
console.log(NaN||NaN);//NaN
console.log(NaN||“abc”);//abc -
如果||左右两边都是 undefined,则返回 undefined,否则返回另一个对象。
console.log(undefined||undefined);//undefined
console.log(undefined||“abc”);//abc -
如果null,NaN,undefined同时出现(两个或三个),谁在||右边返回谁。
console.log(null||NaN||undefined);//undefined
console.log(NaN||null||undefined);//undefined
console.log(undefined||NaN||null);//null