如果使用双感叹号

时间:2019-02-22 06:07:51

标签: javascript

我正在理解别人的代码!

在代码中,我看到了两个解释标记

if (!!webDetection) {

if (!!safeSearchDetection) {

有人可以帮助我理解什么是双重解释标记 Javascript?

1 个答案:

答案 0 :(得分:0)

它用于将变量强制转换为Boolean。它对该变量的双重求反是什么。

第一个否定(!)使表达式成为布尔值,

!(null) // true  
!(undefined) // true  
!(NaN) // true  
!(0) // true  

第二个否定(!!)再次取反,因此!!的输出始终是布尔值!

!!(null) // false  
!!(undefined) // false  
!!(NaN) // false  
!!(0) // false

因此,使用双重否定将每种类型都强制转换为Boolean


例如:

x = 0
typeof x // 'number'
typeof !!x // 'boolean'

y = 'hello world!'
typeof y // 'string'
typeof !!y // 'boolean'

z = [1, 2, 3]
typeof z // 'object'
typeof !!z // 'boolean'

因此,使用!!是将变量转换为等价于条件检查的Boolean的最安全方法!