自己之前判斷常用if(a)判斷a有值或是true,if(!a)判斷a沒值或是false的
但是看到有的人會用if(!!a)或者if(!!!a),就納悶,這樣不是多此一舉嗎?
因為如果a有值或是true
var a = 1 或 a='1',a={},a=[],a=true
if(a){
console.log(a)
}
if(!!a){
console.log(a)
}
兩者的結(jié)果是一樣的
因為如果a沒值或是false
var a = null 或 a=undefined,a=NaN,a='',a=false
if(!a){
console.log(a)
}
if(!!!a){
console.log(a)
}
兩者的結(jié)果也是一樣的
所以感覺在判斷時使用!!或者!!!是多余的。
除非我們是要返回一個值或者給另一個變量賦值時,且確定要返回一個布爾值,為了防止a為空導(dǎo)致返回空值,可以使用。如:
var isShow = !!a
或者
function isCan(a){
return !!a
}
所以!!類似一個強制類型轉(zhuǎn)換,轉(zhuǎn)換為布爾值,當我們不需要轉(zhuǎn)換類型,感覺沒有必要使用。
這個僅僅是本人的觀點,如有不同見解,煩請留言