Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是&"&引用;Javascript中的运算符?_Javascript - Fatal编程技术网

什么是&"&引用;Javascript中的运算符?

什么是&"&引用;Javascript中的运算符?,javascript,Javascript,可能重复: 很抱歉,如果这是显而易见的,但我不能谷歌它 Javascript中的“!!”运算符是什么?e、 g if (!!window.EventSource) { var source = new EventSource('stream.php'); } else { // Result to xhr polling :( } 作者是否只使用了两次“!”即双重否定?我很困惑,因为这在官方文件中。!!用于将非零/非空值转换为布尔值true,将零/空值转换为false 例如,如果a=

可能重复:

很抱歉,如果这是显而易见的,但我不能谷歌它

Javascript中的“!!”运算符是什么?e、 g

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

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

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


例如,如果a=4,那么!a=错误和!!a=!(!a)=true。

它会将任何内容转换为
true
false

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

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

在大多数语言中,
是双重否定,正如
是否定的。考虑这一点:

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

# And therefore...
!!false == false
!!true == true
它通常用于检查值是否存在且是否为假,例如:

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

重复问题二次+1个好答案!“比我的答案要清楚得多。@voncorad:但我认为你的答案更好,因为你首先应该解释没有
这样的东西!!”运算符,然后解释两次求反的副作用才是我们想要的”。@slebetman:Fair point。不过,browsersenior的例子比我的好