javascript中返回值的双感叹号

javascript中返回值的双感叹号,javascript,Javascript,我正在看一本HTML5的书,书中包含了一些js。双感叹号是什么意思 return ! ! document.createElement('video').canPlayType; 运算符取反,次运算符对初始求反的结果求反。这基本上是将右边的内容类型转换为布尔值(true或false) 因此,如果定义了该方法,则truthy的函数将被键入true document.createElement('video').canPlayType 所以上面返回一个函数。我们不想要一个函数,我们想要一个显式布

我正在看一本HTML5的书,书中包含了一些js。双感叹号是什么意思

return ! ! document.createElement('video').canPlayType;

运算符取反,次运算符<代码>对初始求反的结果求反。这基本上是将右边的内容类型转换为布尔值(true或false)

因此,如果定义了该方法,则truthy的
函数将被键入
true

document.createElement('video').canPlayType
所以上面返回一个函数。我们不想要一个函数,我们想要一个显式布尔值,所以我们将它负两次,因为
函数
不是falsy(0,null,false,空字符串,NaN),所以对于支持此方法的浏览器,它返回true

!!document.createElement('video').canPlayType // true

如果不支持该方法,浏览器将返回
undefined
<代码>!未定义的
为真,并且
!true
为false,因此
!!document.createElement('video').LOL
将返回
false

双感叹号是一种JavaScript技巧,用于在不考虑输入的情况下返回true/false。在您的示例中,如果浏览器不支持视频标记,它将返回未定义!undefined是真的。所以未定义是错误的。如果浏览器不支持视频,它将返回true!!真理也是真理。这使您不必处理未定义的情况。

不会
document.createElement('video')。canPlayType
返回布尔值吗?或者如果这是
null
那么
!!(null)=false
?@hunter-document.createElement('video')。如果浏览器不支持视频标记,则canPlayType将返回未定义。。。。javascript是愚蠢的<代码>!null
应引发异常。。。Dangit会喜欢它的,双重否定在编程语言中很有用。我的英语老师说永远不要使用双重否定。“我什么都不想做。”这句话现在也许有意义了在询问之前,我可能会先尝试搜索stackoverflow。很抱歉。我在“双感叹号javascript”下搜索了一下,没有找到任何东西。
!!document.createElement('video').canPlayType // true