首先一个!是取反的意思



!null = true
!'' = true
!undefined=true

!'str'=false
!222=false


 

!!则是取反之后再取反,即实现了



var str ;
if(str!=null && typeof(a)!=undefined&&a!=''){
//str有有效值
}

等于
if(!!str){
//str有效的值
}

也等于
if(str){
//str有有效值
}


 

第二、三种写法明显优于第一种,第二种写法相较第三种写法可以直接获取str是否为有效值的布尔值,有这种需求的用第二种更佳