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

时间:2013-11-06 17:21:39

标签: javascript

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

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

if(value){
    doSomething();
}

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

3 个答案:

答案 0 :(得分:7)

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

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

!!(value)

例如,非空字符串

!!"a" // true

另一个空字符串

的例子
!!"" // false

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

测试一个值
if (value) // ...

然后JavaScript中的以下值为false

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

其他一切true

答案 1 :(得分:7)

技术上没什么。双重爆炸!!类型将value转换为布尔值 - 这是if语句在评估value时所做的事情。

在您发布的代码中,!!没用,无用。

答案 2 :(得分:1)

!!确保结果类型是布尔值(true或false)。

javascript:alert(“foo”) - > FOO

javascript:alert(!“foo”) - >假

javascript:alert(!!“foo”) - >真

javascript:alert(!! null) - >假

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

键入的时间比$('row')短!= = null? true:false。