经常看到如下写法:
var a; var b=!!a;
a默认是undefined。由于a前面遇到一个!逻辑符,所以先将undefined转换成布尔值,结果是false,然后!a是true,!!a则是false,所以b的值是false,而不再是undefined,也非其它值,主要是为后续判断提供便利。
!!的作用一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false
上述写法还可以改成
var a var b=a||false;
原理都是一样的,遇到逻辑判断符时先根据js的类型转换规则,转成布尔值再进行比较