今天遇到了“!!null”的写法,百度没有找到直接的解释,翻书在《javascript高级设计》P44找到了相应的解释:
同时使用两个逻辑非操作符,实际上就会模拟Boolean()转型函数的行为。其中,第一个逻辑非操作符会基于无论什么操作数返回一个布尔值,而第二个逻辑非操作则对该布尔值求反,于是就得到了这个值真正对应的布尔值。当然最终结果与对这个值使用Boolean()函数效果相同。
所以其实个人认为,!!写法就是Boolean()的一种简便写法。
可以运行下面示例来更形象的了解:
alert(!!"blue");
alert(Boolean("blue"));
alert(!!null);
alert(Boolean(null));
如有错误,请您指出~