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