1.逻辑非
如果操作数是一个对象,返回false;
alert(!{a:1})//false
如果操作数是一个空字符串,返回true;
alert(!"")//true
如果操作数是一个非空字符串,返回false;
alert(!"fafa")//false
如果操作数是数值0,返回true;
alert(!0);//true
如果操作数是任意非0数值(包括infinity),返回false;
alert(!Infinity);//false
如果操作数是null,返回true;
alert(!null)//true
如果操作数是NaN,返回true;
alert(!NaN)//true
如果操作数是undefined,返回true;
alert(!undefined)//true
2.逻辑与
如果第一个操作数是对象,则返回第二个操作数
alert({}&&true)//true alert({}&&false)//false
如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象
alert(true&&{a:1})//[object Object] alert(false&&{a:1})//false
如果两个操作数都是对象,则返回第二个操作数
console.log({a:1}&&{b:1});//{b: 1}
如果第一个操作数是null,则返回null
alert(null&&false)//null alert(null&&true)//null
如果第一个操作数是NaN,则返回NaN
alert(NaN&&false)//NaN alert(NaN&&true)//NaN
如果第一个操作数是undefined,则返回undefined
alert(undefined&&false)//undefined alert(undefined&&true)//undefined
3.逻辑或
如果第一个操作数是对象,则返回第一个操作数
alert({a:1}||true);//[object Object] alert({a:1}||false);//[object Object]
如果第一个操作数的求值为false,则返回第二个操作数
alert(false||true);//true
如果两个操作数是对象,则返回第一个操作数
console.log({a:1}||{b:1})//{a: 1}
如果两个操作数是null,则返回null
alert(null || null);//null
如果两个操作数是NaN,则返回NaN
alert(NaN || NaN);//NaN
如果两个操作数是undefined,则返回undefined
alert(undefined || undefined);//undefined