我经常看到使用!!condition
与常规条件相反的代码。IE:
if(!!value){
doSomething();
}
相对:
if(value){
doSomething();
}
如果有的话,功能上的区别是什么?一种优于另一种吗?如果有的话,选择使用一种与另一种的条件是什么?
我经常看到使用!!condition
与常规条件相反的代码。IE:
if(!!value){
doSomething();
}
相对:
if(value){
doSomething();
}
如果有的话,功能上的区别是什么?一种优于另一种吗?如果有的话,选择使用一种与另一种的条件是什么?
技术上没什么。double bang!!
类型转换value
为布尔值 - if 语句在评估时所做的事情value
。
在您发布的代码中,这!!
是无用的,没有任何用途。
这只是一种更明确的方式来测试一个值的“真实性”。
以下将“强制转换”value
为布尔值。
!!(value)
例如,一个非空字符串
!!"a" // true
另一个空字符串的例子
!!"" // false
但是,如果您只是直接使用测试值
if (value) // ...
那么以下值false
在 JavaScript 中
0
-0
null
""
(空字符串)false
undefined
NaN
其他的都是true
这 !!确保结果类型是布尔值(真或假)。
javascript:alert("foo") --> foo
javascript:alert(!"foo") --> false
javascript:alert(!!"foo") --> true
javascript:alert(!!null) --> false
他们这样做是为了确保 $('row') 不为空。
键入比 $('row') != null 短吗?真假。