可能重复:
What does the !! operator (double exclamation point) mean in JavaScript?
$("#imjavascript").attr('checked', !!$('#mainCheck').attr('checked'));
做什么!!是什么意思?
答案 0 :(得分:5)
这是一个双重否定或双重爆炸,因为有人称之为(可能/可能是其他名称),它获取属性并将其转换为布尔值。第一个!
取值的倒数 - 得到一个布尔值,然后第二个得到的逆,所以你得到一个布尔回来的true
/ { {1}}原始的表示,而不是原始的反转。
答案 1 :(得分:2)
这是一种将布尔可转换非布尔类型更改为实际布尔类型的惯用方法。例如,0是Number类型,但也被认为是与布尔值“False”等效的真值。否定是渐开线运算(即它反转自身),因此通过使用双重否定,我们得到相同的真值,但是本机布尔类型。
具体来说,考虑!(!0)
,其评估为!(True)
(因为!0
为True),其评估为False
- 与0相同的真值,但现在是实际的布尔值。