我经常看到使用!!condition
与常规条件相反的代码。IE:
if(!!value){
doSomething();
}
相对:
if(value){
doSomething();
}
如果有的话,在功能上有什么区别?一个比另一个优越吗?如果有的话,选择使用一个和另一个的条件是什么?
我经常看到使用!!condition
与常规条件相反的代码。IE:
if(!!value){
doSomething();
}
相对:
if(value){
doSomething();
}
如果有的话,在功能上有什么区别?一个比另一个优越吗?如果有的话,选择使用一个和另一个的条件是什么?
技术上没什么。双 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") --> 假
javascript:alert(!!"foo") --> 真
javascript:alert(!!null) --> 假
他们这样做是为了确保 $('row') 不为空。
输入比 $('row') != null 更短?真假。