最近在读JQuery源码的时候,常看见如此多的逻辑判断符,就总结一下,这篇文章主要讲的是JS中的“&&”和“||”以及“!!”的区别,以及一些应用。
前言
我们都知道
0,'',undefined,null,NaN 为false
{},[] 为true
可以使用 Boolean(NaN) 和 !! (两次取非获得布尔值)
&& 的用法实例
var a = [true]
var obj = {name:'Msx'}
// &&
console.log(a && obj) //左侧为真 返回右侧 值 {name:'Msx'}
console.log(null && obj) //左侧为假 返回左侧 值 null
console.log(a && {age:"22"} && ['大男子']); //全为真时,返回最右侧 ['大男子']
console.log(null && '' && 0 ) //全为假时返回最左侧 null
|| 的用法实例
// ||
console.log(a || obj) //左侧为真 返回左侧 值 [true]
console.log(null || obj) //左侧为假 返回右侧 值 {name:'Msx'}
console.log(a || {age:"22"} || ['大男子']); //全为真时,返回最左侧 true
console.log(null || '' || 0 ) //全为假时返回最右侧 0
!! 的用法实例
// !! 进行强制转化为bool值的运算,运算结果为true或者false。
// ! 是将其取反 true --> false
console.log(!![]) // true
// !! 应用
// a是有实际含义的变量才执行方法,否则变量null,undefined和''空串都不会执行以下代码。
var o = null;
if(o != null && typeof(o)!='undefined' && o!=''){
//a有内容才执行的代码
alert('任重而道远。。。。')
}
//实际上我们只需要写一个判断表达:
if(!!o){
//a有内容才执行的代码...
alert('任重而道远。。。。')
}
希望对大家有所帮助!!