自己之前判断常用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)
}
两者的结果是一样的
因为如果a没值或是false
var a = null 或 a=undefined,a=NaN,a='',a=false
if(!a){
console.log(a)
}
if(!!!a){
console.log(a)
}
两者的结果也是一样的
所以感觉在判断时使用!!或者!!!是多余的。
除非我们是要返回一个值或者给另一个变量赋值时,且确定要返回一个布尔值,为了防止a为空导致返回空值,可以使用。如:
var isShow = !!a
或者
function isCan(a){
return !!a
}
所以!!类似一个强制类型转换,转换为布尔值,当我们不需要转换类型,感觉没有必要使用。
这个仅仅是本人的观点,如有不同见解,烦请留言









网友评论