关于javascript:if(!! condition)和if(condition)之间有什么区别

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

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

1
2
3
if(!!value){
    doSomething();
}

对比:

1
2
3
if(value){
    doSomething();
}

如果有的话,功能上的区别是什么?一个比另一个好吗?如果有的话,选择使用其中一个的条件是什么?


技术上没有。double-bang !!类型将value转换为布尔值,这是if语句在计算value时所做的。

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


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

下面将"强制"value转换为布尔值。

1
!!(value)

例如,非空字符串

1
!!"a" // true

另一个空字符串示例

1
!!"" // false

但是,如果只使用

1
if (value) // ...

那么下面的值是javascript中的false

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

其他都是true


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

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

javascript:警报!!"FO""->假

javascript:警告(!!"foo")-->true

javascript:警告(!!空)->假

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

打字的时间比$(‘row’)短!= NULL?真:假。