我正在查看一本关于html 5的书,它包含了这个tid的js.双重感叹是什么意思?
return ! ! document.createElement('video').canPlayType;
Run Code Online (Sandbox Code Playgroud)
med*_*iev 23
在!操作者否定,并且次级!否定inital否定的结果.这基本上将右侧的任何内容转换为布尔值(true或false).
!false // true
!!false // false
Run Code Online (Sandbox Code Playgroud)
因此,如果定义了方法function,则将其转换为truthy true.
document.createElement('video').canPlayType
Run Code Online (Sandbox Code Playgroud)
所以上面返回一个函数.我们不需要一个函数,我们想要一个显式的布尔值,所以我们将它否定两次,因为function它不是假的(0,null,false,空字符串,NaN),那么它对于支持这种方法的浏览器返回true.
!!document.createElement('video').canPlayType // true
Run Code Online (Sandbox Code Playgroud)
如果不支持该方法,浏览器将返回undefined.!undefined是真的,!true是假的,所以!!document.createElement('video').LOL会回来false
双重感叹是一种JavaScript技巧,无论输入如何都会返回true/false.在您的示例中,如果浏览器不支持视频标记,则它将返回undefined.!undefined是真的.所以!! undefined是假的.如果浏览器支持视频,则返回true.!!真的也是如此.这使您无需处理未定义的情况.
| 归档时间: |
|
| 查看次数: |
3491 次 |
| 最近记录: |