我经常看到使用!!condition
而不是常规条件的代码。即:
if(!!value){
doSomething();
}
与
if(value){
doSomething();
}
如果有功能差异是什么?一个优于另一个?如果有的话,选择使用一个与另一个的条件是什么?
答案 0 :(得分:7)
这只是一种更明确的方法来测试价值的“真实性”。
以下内容将“value
”转换为布尔值。
!!(value)
例如,非空字符串
!!"a" // true
另一个空字符串
的例子!!"" // false
但是,如果您只是直接使用
测试一个值if (value) // ...
然后JavaScript中的以下值为false
0
-0
null
""
(空字符串)false
undefined
NaN
其他一切是true
答案 1 :(得分:7)
技术上没什么。双重爆炸!!
类型将value
转换为布尔值 - 这是if语句在评估value
时所做的事情。
在您发布的代码中,!!
没用,无用。
答案 2 :(得分:1)
!!确保结果类型是布尔值(true或false)。
javascript:alert(“foo”) - > FOO
javascript:alert(!“foo”) - >假
javascript:alert(!!“foo”) - >真
javascript:alert(!! null) - >假
他们这样做是为了确保$('row')不为空。
键入的时间比$('row')短!= = null? true:false。