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

Fou*_*rth 1 javascript

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

if(!!value){
    doSomething();
}
Run Code Online (Sandbox Code Playgroud)

与:

if(value){
    doSomething();
}
Run Code Online (Sandbox Code Playgroud)

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

Tha*_*you 7

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

以下将"强制转换" value为布尔值.

!!(value)
Run Code Online (Sandbox Code Playgroud)

例如,非空字符串

!!"a" // true
Run Code Online (Sandbox Code Playgroud)

另一个空字符串示例

!!"" // false
Run Code Online (Sandbox Code Playgroud)

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

if (value) // ...
Run Code Online (Sandbox Code Playgroud)

那么以下值是false在JavaScript中

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

其他一切都是true


Ada*_*dam 7

技术上没什么.双重爆炸!!类型转换value为布尔值 - if语句value无论如何都会进行评估.

在您发布的代码中,它!!是无用的,没有用处.