很抱歉,如果这个很明显但我不能谷歌
什么是“!!” Javascript中的运算符? 例如
if (!!window.EventSource) {
var source = new EventSource('stream.php');
} else {
// Result to xhr polling :(
}
作者是否只使用“!”两次即双重否定?我很困惑因为这是官方文件
答案 0 :(得分:10)
它会将任何内容转换为true
或false
:
!!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。