if(!!condition) 和 if(condition) 有什么区别

IT技术 javascript
2021-03-21 09:48:00

我经常看到使用!!condition与常规条件相反的代码IE:

if(!!value){
    doSomething();
}

相对:

if(value){
    doSomething();
}

如果有的话,在功能上有什么区别?一个比另一个优越吗?如果有的话,选择使用一个和另一个的条件是什么?

3个回答

技术上没什么。双 bang!!类型转换value为布尔值 - if 语句在计算时所做的事情value

在您发布的代码中,!!是无用的,没有任何用处。

这只是一种更明确的测试值“真实性”的方法。

以下将“转换”value为布尔值。

!!(value)

例如,一个非空字符串

!!"a" // true

另一个带有空字符串的示例

!!"" // false

但是,如果您只是直接使用测试值

if (value) // ...

那么以下值false在 JavaScript 中

  • 0
  • -0
  • null
  • "" (空字符串)
  • false
  • undefined
  • NaN

其他一切都是true

当用于 if 条件时,它可能没有意义,但当用作返回值时,它可用于发送布尔值。我认为这应该是公认的答案。
2021-05-09 09:48:00

这 !!确保结果类型是布尔值(真或假)。

javascript:alert("foo") --> foo

javascript:alert(!"foo") --> 假

javascript:alert(!!"foo") --> 真

javascript:alert(!!null) --> 假

他们这样做是为了确保 $('row') 不为空。

输入比 $('row') != null 更短?真假。