在某些代码中,我!!
在变量前面看到了双重否定,例如:
{ token: !!localStorage.getItem('token') }
我知道否定用于!
对表达式执行逻辑否定。
但是双重否定会将其转换回最初收到的状态,例如:
var token = true;
console.log( token ); // true
console.log( !token ); // false
console.log( !!token ); // true
为什么在 JavaScript 中使用这种技术?
当然现在你会更加困惑,但让我们看一些例子:
也许现在通过示例可以更好地理解第一段:
双重否定主要用于强制类型转换,如果我们想用相等
!!
运算符比较值的类型也是类似的,我们必须使用严格相等运算符。==
===
一个在真实代码中也可以看到的例子:
在示例中,我们将值与
true
(boolean) 进行比较,如果我们不使用双重否定!!
,它将始终返回 false。其他用途也将是混淆代码,例如:
他们还说如果我们使用双重否定会更快,但请自己判断,我
Benchmark
在jsPerf 中创建了一个 - 请参阅 SpeedTest ...来源以及您可以在哪里看到更多示例和解释: