如果(!!条件)和 if(条件)

What is the difference between if(!!condition) and if(condition)

本文关键字:条件 if 如果      更新时间:2023-09-26

我经常看到使用!!condition而不是常规条件的代码。 即:

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

对:

if(value){
    doSomething();
}

如果有的话,功能差异是什么?一个优于另一个吗?拣选使用其中一种与另一种的条件是什么?

技术上什么都没有。双爆炸!!类型将value转换为布尔值 - if 语句在计算value时都会这样做。

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

这只是测试值"真实性"的更明确的方法。

以下内容将value"强制转换"到布尔值。

!!(value)

例如,非空字符串

!!"a" // true

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

!!"" // false

但是,如果您只是直接使用

if (value) // ...

那么以下值在 JavaScript 中false

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

其他一切都true

!! 确保生成的类型是布尔值(真或假)。

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

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

JavaScript:alert(!!"foo") --> 真实

JavaScript:alert(!!空) --> 假

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

键入它比 $('row') != null 短 ? 真 : 假。