Javascript!还有!!分歧

Javascript!还有!!分歧,javascript,operators,Javascript,Operators,可能重复: 这两个运营商的区别是什么?做有特别的意义,还是仅仅意味着你在做两件事操作。我知道Javascript中有“真实”和“真实”的概念,但我不确定!!意思是“真理”!!只是加倍 !true // -> false !!true // -> true !!是将某些内容转换为布尔值的常用方法 !!{} // -> true !!null // -> false 写是将“truthy”或“false”变量转换为真正布尔值的常用方法 例如: var foo = nu

可能重复:

这两个运营商的区别是什么?做有特别的意义,还是仅仅意味着你在做两件事操作。我知道Javascript中有“真实”和“真实”的概念,但我不确定!!意思是“真理”

!!只是加倍

!true // -> false
!!true // -> true
!!是将某些内容转换为布尔值的常用方法

!!{}  // -> true
!!null // -> false

是将“truthy”或“false”变量转换为真正布尔值的常用方法

例如:

var foo = null;

if (!!foo === true) {
    // Code if foo was "truthy"
}

在第一个
之后
应用于
foo
,返回的值为
true
。再次注释该值将使其
为false
,这意味着如果未输入
块,则
中的代码。

@为清楚起见,可能“转换为真正的布尔值”<代码>!!当然,0是一个错误的布尔值…@lonesomeday:很好,谢谢。那么为什么不直接做
if(foo){}
?这不也是同样的吗?@罗伯特:是的。如果(!!foo===true)
@Robert:在这种情况下,你不需要
。但是,当您需要某个值的真正布尔表示时,它非常方便。