我绝不是 Javascript 方面的专家,但我一直在阅读 Mark Pilgrim 的“Dive into HTML5”网页,他提到了一些我希望更好地理解的内容。
他说:
最后,您使用双重否定技巧将结果强制为布尔值(真或假)。
function supports_canvas() { return !!document.createElement('canvas').getContext; }
如果有人能更好地解释这一点,我将不胜感激!
逻辑 NOT 运算符!将值转换为与其逻辑值相反的布尔值。
!
第二个!将先前的布尔结果转换回其原始逻辑值的布尔表示。
从逻辑非运算符的这些文档中:
如果其单个操作数可以转换为 true,则返回 false;否则,返回真。
因此,如果getContext给您一个“假”值,!! 它将使其返回布尔值false。否则它将返回true。
getContext
!!
false
true
“虚假”值是:
NaN
undefined
null
""
0