我经常看到使用的代码!!condition而不仅仅是常规条件.即:
if(!!value){
doSomething();
}
Run Code Online (Sandbox Code Playgroud)
与:
if(value){
doSomething();
}
Run Code Online (Sandbox Code Playgroud)
如果存在功能上的差异是什么?一个优于另一个?如果有的话,选择使用一个与另一个的条件是什么?
这只是一种更明确的方法来测试一个值的"真实性".
以下将"强制转换" value为布尔值.
!!(value)
Run Code Online (Sandbox Code Playgroud)
例如,非空字符串
!!"a" // true
Run Code Online (Sandbox Code Playgroud)
另一个空字符串示例
!!"" // false
Run Code Online (Sandbox Code Playgroud)
但是,如果您只是直接使用测试值
if (value) // ...
Run Code Online (Sandbox Code Playgroud)
那么以下值是false在JavaScript中
0-0null"" (空字符串)falseundefinedNaN其他一切都是true