我正在理解别人的代码!
在代码中,我看到了两个解释标记
if (!!webDetection) {
和
if (!!safeSearchDetection) {
有人可以帮助我理解什么是双重解释标记 Javascript?
答案 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
的最安全方法!