逻辑与(&&)
对于非bool 值:
如果第一个操作数是对象,则返回第二个数
如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象;
如果第两个操作数都是对象,则返回第二个数操作数
如果有一个操作数是null,则返回null
如果有一个操作数是NaN,则返回第NaN
如果有一个操作数是undefined,则返回undefined
Demo:
var a=(obj && null); alert(a) //null
var a=(null && obj); alert(a) //null
var a=(obj && undefined); alert(a) //undefined
var a=(undefined && obj); alert(a) //undefined
var a=(obj && NaN); alert(a) //NaN
var a=(NaN && obj ); alert(a) //NaN
var a=(obj && obj2); alert(a==obj2) //true
逻辑或(||)
如果第一个操作数是对象,则返第一个操作数
如果第一个操作数的求值结果为false,则返回第二个操作数
如果两个操作数都是对象,则返回第一个操作数
如果两个操作数是null,则返回null
如果两个操作数是NaN,则返回NaN
如果两个操作数是undefined,则返回undefined