1、!可将变量转换成boolean类型,null、undefined和空字符串取反都为false,其余都为true。

!null=true
!undefined=true
!''=true
!100=false
!'abc'=false

2、!!常常用来做类型判断,在第一步 !(变量)之后再做逻辑取反运算,在js中新手常常会写这样臃肿的代码:
判断变量a为非空,未定义或者非空串才能执行方法体的内容

var a;
if(a != null && typeof(a) != undefined && a != ''){
    //a有内容才执行的代码
}
实际上我们只需要写一个判断表达:
if(!!a){
    //a有内容才执行的代码...  
}
就能和上面达到同样的效果。