Javascript!和!! 分歧

voi*_*ter 6 javascript operators

可能重复:
什么是!! JavaScript中的运算符?

这两个运营商有什么区别?!! !! 有特殊的意义,或者只是意味着你做了两个'!' 操作.我知道Javascript中有"Truth"和"Truthy"概念,但我不确定是否!! 是为了"真理"

bjo*_*rnd 8

!只是双倍!

!true // -> false
!!true // -> true
Run Code Online (Sandbox Code Playgroud)

!将某事物转换为布尔值的常用方法

!!{}  // -> true
!!null // -> false
Run Code Online (Sandbox Code Playgroud)


And*_*ker 7

写入!!是将"truthy"或"falsey"变量转换为真正的布尔值的常用方法.

例如:

var foo = null;

if (!!foo === true) {
    // Code if foo was "truthy"
}
Run Code Online (Sandbox Code Playgroud)

!应用第一个后foo,返回的值为true.再次注意到该值false,这意味着if不会输入块内的代码.

  • @为清晰起见,也许"变成*真正的*布尔值".当然,`!! 0`是*false*布尔值... (3认同)