什么是&"&引用;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的例子比我的好