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条件下使用时,它可能没有意义,但当用作返回值时,它可用于发送布尔值。我认为这应该是公认的答案。