因为我在玩 HTML5 视频的可能性,所以我遇到了getUserMedia.js,它提供跨浏览器支持。
在研究库是如何工作的(并试图让它在 requirejs 模块中工作)时,我发现了以下奇怪的if
结构:
if ( !! navigator.getUserMedia_) {
...
双重否定?这是什么意思,为什么?为什么不简单使用以下?
if (navigator.getUserMedia_) {
...
因为我在玩 HTML5 视频的可能性,所以我遇到了getUserMedia.js,它提供跨浏览器支持。
在研究库是如何工作的(并试图让它在 requirejs 模块中工作)时,我发现了以下奇怪的if
结构:
if ( !! navigator.getUserMedia_) {
...
双重否定?这是什么意思,为什么?为什么不简单使用以下?
if (navigator.getUserMedia_) {
...
JavaScript 中的双重否定!!
只是将值转换为布尔类型。
!!
通常用于将变量转换为布尔值(强制布尔上下文)
使用它是因为可以将不同的类型评估为false
, undefined
,null
等''
。
如果你使用:!!undefined
,你会得到:
!!undefined
!true
false
这样,如果在布尔上下文中进行评估,您实际上会得到等于参数的布尔值。
它不完全是一个运算符,它是两个相同的 ( !
),它基本上将任何东西转换为布尔值。换句话说,取一个值的双重否定。