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

时间:2010-12-25 07:47:09

标签: javascript

  

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

很抱歉,如果这个很明显但我不能谷歌

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

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

作者是否只使用“!”两次即双重否定?我很困惑因为这是官方文件

3 个答案:

答案 0 :(得分:10)

它会将任何内容转换为truefalse

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

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

答案 1 :(得分:6)

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

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

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

它通常用于检查值是否存在且不是假的,如下:

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

答案 2 :(得分:1)

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

E.g。如果a = 4,那么!a = false和!! a =!(!a)= true。