此JavaScript代码是什么意思?

flag &= ~CONST

它是追加,添加,相交还是其他?

最佳答案

这将关闭任何常量代表。

例如,让我们看一个假设的示例代码,它代表窗口的状态:

WS_HASBORDER           = 0x01;
WS_HASCLOSEBUTTON      = 0x02;
WS_HASMINIMIZEBUTTON   = 0x04;
WS_HASMAXIMIZEBUTTON   = 0x08;
WS_ISMAXIMIZED         = 0x10;

我们可以使用来表示窗口的“状态”windowState = WS_HASBORDER | WS_HASCLOSEBUTTON | ... etc
现在,假设我们要“关闭”这些状态之一,那就是您的示例代码的作用...windowState &= ~WS_HASBORDER
现在上面的代码做了什么,就是它得到了右边的WS_HASBORDER的称赞(我想您可以称其为反转位)。

因此,。WS_HASBORDER已打开一个位,其他所有都关闭了。它的补充是将所有位都打开,除了之前已关闭的一位。

由于我已将许多常量表示为字节,因此我仅向您显示一个示例[不是javascript不会将数字表示为字节,您也不能这样做]
WS_HASBORDER           = 0x01; //0000 0001
WS_HASCLOSEBUTTON      = 0x02; //0000 0010
WS_HASMINIMIZEBUTTON   = 0x04; //0000 0100
WS_HASMAXIMIZEBUTTON   = 0x08; //0000 1000
WS_ISMAXIMIZED         = 0x10; //0001 0000

_现在举个例子
windowState = WS_HASBORDER | WS_HASCLOSEBUTTON | WS_HASMINIMIZEBUTTON |
              WS_HASMAXIMIZEBUTTON | WS_ISMAXIMIZED;

     0000 0001
     0000 0010
     0000 0100
     0000 1000
and) 0001 0000
--------------
     0001 1111 = 0x1F

所以... windowState获取值0x1F

windowState&=〜WS_HASMAXIMIZEBUTTON
 WS_HASMAXIMIZEBUTTON: 0000 1000
~WS_HASMAXIMIZEBUTTON: 1111 0111

..完成我们的计算
             windowState
&) ~WS_HASMAXIMIZEBUTTON

becomes
    0001 1111
&)  1111 0111
-------------
    0001 0111 = 0x07

这是您产生的标志:
上:
WS_HASBORDER
WS_HASCLOSEBUTTON
WS_HASMINIMIZEBUTTON
WS_ISMAXIMIZED

关:
WS_HASMAXIMIZEBUTTON

希望能有所帮助。回到拖延的作业,我去了!哈哈。

09-25 17:37