逻辑表达式包括与、或、非。但操作数不一定是布尔型,任何类型的变量都可以转换为真值和假值,假值是false,null,undefined,0,NaN和'',其余的包括对象都是真值。
&&逻辑与
&&
如果左侧值为假值,直接返回左侧值;如果左侧值为真值,则返回右侧值。
undefined&&10 //undefined
5&&null //null
(a==b)&&stop() //如果a等于b,则执行stop()函数
|| 逻辑或
||
如果左侧值为真值,直接返回左侧值;如果左侧值为假值,则返回右侧值。
undefined||10 //10
5||null //5
常用来给参数赋默认值
function copy(o,p){
p = p||{} //如果p没有传入对象,则新创建一个对象
//....
}
! 逻辑非
是一元运算符。和以上两个不同,首先把操作数转换为布尔型,再进行操作。
!!x
可以求得x的等价布尔值。
!!null //false
!!0 //false
!!5 //true