双感叹号(!!)在javascript中是如何工作的?

双感叹号(!!)在javascript中是如何工作的?,javascript,Javascript,我正在进行“发现流星”的演示,正在努力弄清楚“返回”的确切方式!!用户ID;'工作地点: 是逻辑求反或“not”运算符是两次。这是一种将“truthy”或“falsy”值分别转换为true或false的方法。给定一个布尔值,将否定该值,即!true产生false,反之亦然。给定布尔值以外的值,该值将首先转换为布尔值,然后求反。例如,!未定义的将首先将未定义的转换为假,然后将其取反,得到真。应用第二个运算符(!!未定义)产生false,因此实际上是!!未定义的将未定义的转换为假 在JavaScri

我正在进行“发现流星”的演示,正在努力弄清楚“返回”的确切方式!!用户ID;'工作地点:


是逻辑求反或“not”运算符<代码>
两次。这是一种将“truthy”或“falsy”值分别转换为
true
false
的方法。给定一个布尔值,
将否定该值,即
!true
产生
false
,反之亦然。给定布尔值以外的值,该值将首先转换为布尔值,然后求反。例如,
!未定义的
将首先将
未定义的
转换为
,然后将其取反,得到
。应用第二个
运算符(
!!未定义
)产生
false
,因此实际上是
!!未定义的
未定义的
转换为

在JavaScript中,值
false
null
未定义的
0
-0
NaN
,和
'
(空字符串)都是“假”值。所有其他值都是“真实的”。这是
的真值表
应用于各种值:

 value     | !value | !!value
-----------+--------+-------
 false     | true   | false
 true      | false  | true
 null      | true   | false
 undefined | true   | false
 0         | true   | false
 -0        | true   | false
 1         | false  | true
 -5        | false  | true
 NaN       | true   | false
 ''        | true   | false
 'hello'   | false  | true

谢谢那真的很有帮助!这是迄今为止我所看到的最好的解释——很好的答案!非常感谢你!值得注意的(如“hello”)
!!“false”
#=>
true
它似乎与下面这个重复的问题一样有效,并且有大量的答案:
 value     | !value | !!value
-----------+--------+-------
 false     | true   | false
 true      | false  | true
 null      | true   | false
 undefined | true   | false
 0         | true   | false
 -0        | true   | false
 1         | false  | true
 -5        | false  | true
 NaN       | true   | false
 ''        | true   | false
 'hello'   | false  | true