Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这个接线员是什么=_Javascript_Operators_Bit Manipulation - Fatal编程技术网

Javascript 这个接线员是什么=

Javascript 这个接线员是什么=,javascript,operators,bit-manipulation,Javascript,Operators,Bit Manipulation,有人能解释一下操作符&=的作用吗 我搜索了,但只得到了&或=的结果 a &= b; 与 a = a & b; &是“按位and运算符”,搜索它。这是一个允许折叠的速记运算符 a = a & b a = a && b 进入 除了对整数进行逐位运算外,&=还可以对布尔值进行运算,从而允许折叠 a = a & b a = a && b 进入 然而,在逻辑运算的情况下,扩展形式是短路,而后一种折叠形式不会短路 例如: 让b()成

有人能解释一下操作符
&=
的作用吗

我搜索了,但只得到了
&
=
的结果

a &= b;

a = a & b;

&是“按位and运算符”,搜索它。

这是一个允许折叠的速记运算符

a = a & b
a = a && b
进入

除了对整数进行逐位运算外,
&=
还可以对布尔值进行运算,从而允许折叠

a = a & b
a = a && b
进入

然而,在逻辑运算的情况下,扩展形式是短路,而后一种折叠形式不会短路

例如:

b()
成为一个函数,它返回一个值,并执行影响程序状态的操作

a
false

如果你这样做

a = a && b()
a &= b()
短路发生:由于
a
false
,因此无需计算
b
(并且跳过
b()中可能发生的额外计算)

另一方面,如果你这样做

a &= b()

短路不会发生:
b
在任何情况下都会被计算,即使
a
false
(并且计算
b()
不会改变逻辑结果),因此
b()内可能发生的任何额外计算
确实得到执行。

如果我没记错的话,它是双向操作……例如,它可以与[Flags]Enum一起使用。 它检查您的标志变量是否具有特定值。

x &= y;
相当于

x = x & y;
请注意,
&
是按位and运算符。

在C#(我认为在大多数语言中)是按位分配运算符

a&=b相当于a=a&b


a&=b
等同于
a=a&b

这是一个常规操作员吗?一般来说,对于任何二元运算符,a#=b等于a=a#b。(请注意,接受的答案是不完整的。有关
&=
运算符的更详尽解释,请参阅)。更具体地说,它是“按位和赋值运算符”(无论如何)。请注意,
&=
是按位和逻辑and运算符的复合赋值运算符,而不仅仅是“按位and运算符”。逻辑AND的唯一特点是折叠的
&
不会短路(始终计算右侧操作数),而如果左侧操作数的计算结果为
false
,则未折叠的
&
运算符会短路。