圣诞树操作员(>>〜)做什么?

时间:2015-12-18 16:21:16

标签: javascript

因为我注意到Javascript有很多个体操作符被基本操作符组合指定的最后几天,我做了一些研究,发现有很多好的问题(至少那是什么的投票告诉我)。

我昨天和今天开始注意那些非常不寻常的操作员得到解释。

What does 'x << ~y' represent in JavaScript?

What does "!--" do in JavaScript?

所以在我在其中一条评论中看到这个>>~运算符后,我感觉欲望在我们社区的职责中问这个。

圣诞树操作员在这样的情况下实际上做了什么:

christmas=

!0
0 >>~
!-0;

我也在考虑,即使爸爸没有注意到,也可以让蜡烛燃烧:

christmas=

!0
0 >>~

如果孩子们也离开了,我们能否识别它christmas

christmas=

>>~

1 个答案:

答案 0 :(得分:4)

此行最后在使用ASI后插入分号:

!0

哪个不是0(假值),true

>>右移和~按位NOT之后没有插入ASI分号,因此将其评估为一行:

0 >>~
!-0

可以(更正确地写成):

0 >> ~!-0

零只能右移到等于零,但无论如何我们都会打破右侧。按位NOT,布尔值NOT和数字转换为0。

-0 == 0
!0 == true
~true = -2

再说一遍,右移的右侧是什么并不重要,因为零只是一堆零位。