javascript返回值的双感叹号

double exclamation on a return value in javascript

本问题已经有最佳答案,请猛点这里访问。

我在看一本书,里面有一点JS。双感叹号是什么意思?

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


!运算符否定,次!运算符否定初始否定的结果。这基本上是将右侧的内容类型化为布尔值(对或错)。

1
2
!false // true
!!false // false

因此,如果定义了方法,那么正确的function将被类型化为true

1
document.createElement('video').canPlayType

所以上面返回一个函数。我们不需要一个函数,我们需要一个显式的布尔值,所以我们将它负两次,因为function不是错误的(0,null,false,empty string,nan),所以对于支持此方法的浏览器,它返回true。

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

如果不支持该方法,浏览器将返回undefined!undefined为真,!true为假,因此!!document.createElement('video').LOL将返回false


双感叹号是一个javascript技巧,可以返回true/false,而不考虑输入。在您的示例中,如果浏览器不支持视频标记,它将返回未定义。!Undefined为真。所以!!Undefined为false。如果浏览器支持视频,它将返回true。!!!真的也是真的。这样可以避免处理未定义的情况。