Javascript赋值运算符

赋值运算符将值赋给变量
 

运算符相当于
=x = yx = y
+=x += yx = x + y
-=x -= yx = x – y
*=x *= yx = x * y
/=x /= yx = x / y
%=x %= yx = x % y
<<=x <<= yx = x << y
>>=x >>= yx = x >> y
>>>=x >>>= yx = x >>> y
&=x &= yx = x & y
^=x ^= yx = x ^ y
|=x |= yx = x | y
**=x **= yx = x ** y

**= 运算符是在 ECMAScript 2016 proposal (ES7) 中开始有的试验性运算符,考虑到浏览器兼容性,请慎用。
注:小学生都会的那种,过于简单的例子这里就不列出了。

%=
var x = 7,
        y = 4,
        z = -2.5;
    x %= y;
    console.log(x); // x=3,7/4余数3
    z %= x;
    console.log(z); // z=-2.5,(-2.5)/3,没得除,余下-2.5
    y %= z;    
    console.log(y); // y=1.5,哇唔,请继续往下看。

点击负数取余运算了解更多。鉴于初学者求余的使用率较低,所以暂时不用花太多的时间研究含负数的求余运算。了解简单的求余运算就行。
说到求余,求余常用于判断一个数是否可以被另外一个数整除。

<<=

将数值的二进制左移N位。

var x = 1;
    x <<= 2;
    console.log(x); //将1的二进制左移两位,然后移位的二进制转为十进制输出。答案是4。即,1的二进制是1,左移两位就是100,二进制100转成十进制得4.
>>=
var x = 1;
    x >>= 6;
    console.log(x); //将1的二进制右移6位,然后移位的二进制转为十进制输出。答案是0。即,1的二进制是1,右移6位。但是没有办法往更低位补码,所以可以说1右移移出去了。原本的最低位剩下0。得0。
&=
var x = 30;
    x &= 28;
    console.log(x); //答案28。意思就是x = 30&28;30的二进制是11110,28的二进制是11100。按位比较,1&1为1,1&0为0,所以得11100,转十进制为28。
^=
var x = 30;
    x ^= 28;
    console.log(x); //答案2。意思就是x = 30^28;30的二进制是11110,28的二进制是11100。按位比较,0^0=0,1^0=1,0^1=1,1^1=0(同为0,异为1)。所以答案是:2。
|=
var x = 30;
    x |= 28;
    console.log(x); //答案30。意思就是x = 30|28;30的二进制是11110,28的二进制是11100。按位比较,只要不是均为0都为1。所以答案是:30。

 
下面再次总结一下按位运算规则:

按位与 – AND (位与&)

1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0

按位或 – OR ( 位或| )

1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0

按位异或 – XOR ( 位异或^ )

1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0