javascript 中!! 运算符是什么

What is the !! operator in javascript?

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

Possible Duplicate:
What is the !! (not not) operator in JavaScript?
Can someone explain this ‘double negative’ trick?

因为我在玩HTML5视频的可能性,我遇到了getusermedia.js,它提供跨浏览器支持。

在研究库是如何工作的(并尝试在RequireJS模块中工作)时,我发现了以下奇怪的if结构:

1
2
if ( !! navigator.getUserMedia_) {
   ...

双重否定?这是什么意思?为什么?为什么不简单地使用以下内容?

1
2
if (navigator.getUserMedia_) {
   ...


在javascript中,double negation !!只需将值转换为布尔类型。


!!通常用于将变量强制转换为布尔值(强制布尔值上下文)

这是因为可以对false进行不同类型的评估,例如undefinednull''等。

如果你使用:!!undefined,你会得到:

  • !!undefined
  • !true
  • false
  • 这样,如果在布尔上下文中进行计算,则实际获得的布尔值等于参数。


    它不是一个完全相同的运算符,它是同一个运算符中的两个(!),它基本上将任何东西转换为布尔值。换句话说,取一个值的双负。