- ! 可将变量转换成boolean类型,null、undefined和空字符串取反都为true,其余都为false
!null === true
!undefined === true
!'' === true
!100 === false
!'abc' === false
- !! 常常用来做类型判断,在第一步!(变量)之后再做逻辑取反运算,在js中新手常常会写这样臃肿的代码:判断变量a为非空,未定义或者非空串才能执行方法体的内容
var a;
if(a!=null&&typeof(a)!=undefined&&a!=''){
//a有内容才执行的代码
}
实际上我们只需要写一个判断表达:
if(!!a){
//a有内容才执行的代码...
}
“!”是逻辑非运算,并且可以与任何变量进行逻辑非将其转化为布尔值,
"!!"将表达式进行强制转化为bool值的运算,运算结果为true或者false。
尤其后者在判断类型时代码简洁高效,省去了多次判断null、undefined和空字符串的冗余代码。!!是将表达式强制转化为bool值的运算,运算结果为true或false,表达式是什么值,结果就是对应的bool值,不再取非。
!!false=false; 要注意false和“false” 的区别!!!!!
!!"false"=true;
!!true=true;
!!(NaN || undefined || null || 0 || ' ')=false;
var o={flag:true}; var test=!!o.flag;//等效于var test=o.flag||false; alert(test);