【问题标题】:What is the "!!" operator in Javascript? [duplicate]是什么 ”!!” Javascript中的运算符? [复制]
【发布时间】:2011-05-30 14:26:58
【问题描述】:

可能重复:
What is the !! operator in JavaScript?

对不起,如果这个很明显,但我无法谷歌它。

什么是“!!” Javascript中的运算符?例如

if (!!window.EventSource) {
  var source = new EventSource('stream.php');
} else {
  // Result to xhr polling :(
}

作者是不是用了“!”两次,即双重否定?我很困惑,因为这是在官方文档中。

【问题讨论】:

标签: javascript


【解决方案1】:

它将任何内容转换为truefalse

!!0    // => false
!!1    // => true 
!!'a'  // => true
!!''   // => false
!!null // => false

从技术上讲,!! 不是运算符,它只是两个相邻的 ! 运算符。但是双重否定是没有意义的,除非你像运算符一样使用!! 来转换为布尔类型。

【讨论】:

  • +1 不错的答案!比我的清晰很多。
  • @vonconrad:但是恕我直言,您的回答更好,因为首先应该解释没有 !! 运算符之类的东西,然后才解释这是这样做的副作用否定两次是想要的。
  • @slebetman:公平点。尽管如此,browsersenior 的例子还是比我的好。 ;)
【解决方案2】:

在大多数语言中,!! 是双重否定,因为 ! 是否定。考虑一下:

# We know that...
!false == true

# And therefore...
!!false == false
!!true == true

常用于检查某个值是否存在且不为假,例如:

!!'some string' == true
!!123 == true
!!myVar == true

【讨论】:

    【解决方案3】:

    !!用于将非零/非空值转换为布尔值 true,将零/空值转换为 false。

    例如如果 a = 4,则 !a = false 和 !!a = !(!a) = true。

    【讨论】:

      猜你喜欢
      • 2017-06-09
      • 2016-08-28
      • 2012-12-29
      • 2019-07-01
      • 2014-03-24
      • 2011-08-08
      • 2016-07-24
      • 2014-03-07
      • 1970-01-01
      相关资源
      最近更新 更多