因为我注意到Javascript有很多个体操作符被基本操作符组合指定的最后几天,我做了一些研究,发现有很多好的问题(至少那是什么的投票告诉我)。
我昨天和今天开始注意那些非常不寻常的操作员得到解释。
What does 'x << ~y' represent in JavaScript?
和
What does "!--" do in JavaScript?
所以在我在其中一条评论中看到这个>>~运算符后,我感觉欲望在我们社区的职责中问这个。
圣诞树操作员在这样的情况下实际上做了什么:
christmas=
!0
0 >>~
!-0;
我也在考虑,即使爸爸没有注意到,也可以让蜡烛燃烧:
christmas=
!0
0 >>~
如果孩子们也离开了,我们能否识别它christmas
:
christmas=
>>~
答案 0 :(得分:4)
此行最后在使用ASI后插入分号:
!0
哪个不是0
(假值),true
。
在>>
右移和~
按位NOT之后没有插入ASI分号,因此将其评估为一行:
0 >>~
!-0
可以(更正确地写成):
0 >> ~!-0
零只能右移到等于零,但无论如何我们都会打破右侧。按位NOT,布尔值NOT和数字转换为0。
-0 == 0
!0 == true
~true = -2
再说一遍,右移的右侧是什么并不重要,因为零只是一堆零位。