为什么使用!!(a&&b)而不是(a&&b)进行能力检测

高程书第九章客户端检测给出的实例中多次出现!!(a&&b)的表达式
如果是进行布尔值转换的话
&&运算出来直接就是布尔值 为什么要加!!呢
eg:var hasNSPlugins = !!(navigator.plugins&&navigator.plugins.length);

阅读 2.7k
3 个回答

&&运算出来的结果不一定是Boolean,比如 1 && 2 返回 2

1&2 = 0
&&&不是一回事

虽然说 & 和 && 不是一回事,
但是其实并不推荐 !! 这种写法, ESLint 严格版规则中,这写的写法,通不过检查

推荐问题