Javascript if(!!条件)和if(条件)之间的区别是什么

Javascript if(!!条件)和if(条件)之间的区别是什么,javascript,Javascript,我经常看到代码使用!!条件,而不仅仅是常规条件。即: if(!!value){ doSomething(); } 与: if(value){ doSomething(); } 如果有,功能上的区别是什么?一个比另一个好吗?如果有的话,使用其中一个与另一个进行拣选的条件是什么?!!确保生成的类型为布尔类型(true或false) javascript:alert(“foo”)-->foo javascript:alert(!“foo”)-->false javascript:a

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

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

if(value){
    doSomething();
}

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

!!确保生成的类型为布尔类型(true或false)

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

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

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

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

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


它比$('row')短!=无效的真:假。

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

下面将把值转换为布尔值

!!(value)
例如,非空字符串

!!"a" // true
!!"" // false
另一个带有空字符串的示例

!!"a" // true
!!"" // false

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

if (value) // ...
然后,以下值在JavaScript中为
false

  • 0
  • -0
  • null
  • (空字符串)
  • false
  • 未定义
  • NaN

其他一切都是
正确的

从技术上讲,什么都不是。双重爆炸
type将
value
转换为布尔值,这是if语句在计算
value
时执行的操作


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

可能与See@JonathanNaguin重复:不,它不是。另请参见在if条件下使用时,它可能没有意义,但当用作返回值时,它可用于发送布尔值。我认为这应该是公认的答案。