js语法:如何解释这个:return !!(exp);

时间:2014-01-20 16:54:02

标签: javascript syntax return

在页面基本示例上工作,我找到了这段代码:

function hasGetUserMedia() {

return !!(navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia);

} 

并且惊讶于:返回!!(exp)

有人可以解释这个'!!' ?这是换线吗?或者避免返回值?

我找不到这种(奇怪的)语法的用法和信息

谢谢!

2 个答案:

答案 0 :(得分:1)

!!将值强制转换为表示原始值是“truthy”还是“falsy”的布尔值。例如:

!!"foo" // true
!!""    // false

鉴于!是否定运算符,使用它一次会将一个值转换为一个布尔值,该布尔值是它的truthy / falsy值的相反。如,

!"foo" // false
!""    // true

添加另一个!否定否定,导致一个布尔值匹配原始非布尔值的真值/错误。

答案 1 :(得分:0)

下面的代码强制将表达式转换为布尔值。

function hasGetUserMedia() {

    return !!(navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia);

}