使用&&时为什么在IF语句中有两个!!

Zoo*_*der 7 javascript if-statement

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

我正在查看一些代码并查看如下所示的IF语句.谁能告诉我为什么有两个!!而不是一个?我以前从未见过这个,也无法在Google上挖掘任何东西,因为它忽略了特殊的角色.

if (!!myDiv && myDiv.className == 'visible') {
}
Run Code Online (Sandbox Code Playgroud)

Boj*_*les 4

双非运算符用于将变量转换为boolean类型。dobule 不会相互抵消,但看到!returntruefalse,您只能得到两个输出之一。

例如,

!!0 == true
Run Code Online (Sandbox Code Playgroud)

所以

!!myDiv == true
Run Code Online (Sandbox Code Playgroud)

转换myDiv为布尔值并根据 true 进行测试。!!myDiv只会给出truefalse.

  • 为什么在问题给出的例子中这是必要的?“if”条件的谓词已被解释为布尔值。另外,`!!0 !== true`,因为`0`是假的。 (2认同)