加法赋值 (+=)
加法赋值操作符 (+=
) 将右操作数的值添加到变量,并将结果分配给该变量。两个操作数的类型确定加法赋值运算符的行为。加法或串联是可能的。
let a = 2;
let b = 'hello';
console.log(a += 3); // addition
// expected output: 5
console.log(b += ' world'); // concatenation
// expected output: "hello world"
相加运算符 (+)
相加运算符 (+
) 用于对两个操作数进行相加运算,如果操作数为字符串则该运算符将两个操作数连接成一个字符串。
console.log(2 + 2);
// expected result: 4
console.log(2 + true);
// expected result: 3
console.log('hello ' + 'everyone');
// expected result: "hello everyone"
console.log(2001 + ': A Space Odyssey');
// expected result: "2001: A Space Odyssey"
赋值运算符(=)
简单赋值操作符(=)用于为变量赋值。赋值表达式本身的值为其完成后被赋值的变量的值。为了给多个变量赋一个值,可以链式使用赋值操作符。
let x = 2;
const y = 3;
console.log(x);
// expected output: 2
console.log(x = y + 1); // 3 + 1
// expected output: 4
console.log(x = x * y); // 4 * 3
// expected output: 12
按位与赋值(&=)
按位与赋值运算符(&=)表示两个操作数的二进制,对它们进行按位AND运算并将结果分配给变量。
例子
let a = 5; // 00000000000000000000000000000101
a &= 3; // 00000000000000000000000000000011
console.log(a); // 00000000000000000000000000000001
// expected output: 1
语法
Operator: x &= y
Meaning: x = x & y
按位与 (&)
按位与运算符 (&
) 在每个位上返回 1
,这两个操作数对应的位都是 1
.
语法
a & b
描述
操作数被转换为32位整数,并由一系列位(0和1)表示。 超过32位的数字将丢弃其最高有效位。 例如,以下大于32位的整数将被转换为32位整数:
Before: 11100110111110100000000000000110000000000001
After: 10100000000000000110000000000001
第一个操作数中的每个位都与第二个操作数中的相应位配对:第一位到第一位,第二位到第二位,依此类推。
将运算符应用于每对位,然后按位构造结果。
与运算的真值表:
a | b | a AND b |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
. 9 (base 10) = 00000000000000000000000000001001 (base 2)
14 (base 10) = 00000000000000000000000000001110 (base 2)
--------------------------------
14 & 9 (base 10) = 00000000000000000000000000001000 (base 2) = 8 (base 10)
将任何数字x
与0
进行按位与运算将得出0
。
示例
使用按位与
// 5: 00000000000000000000000000000101
// 2: 00000000000000000000000000000010
5 & 2; // 0
按位非 (~)
按位非运算符(~),反转操作数的位。
语法
~a
描述
操作数被转换为32位二进制表示(0和1)。超过32位的数字将丢弃其最高有效位。如下例子中,超过32位的整数转换为32位整数:
Before: 11100110111110100000000000000110000000000001
After: 10100000000000000110000000000001
第一个操作数中的每个位都与第二个操作数中的相应位配对:第一位到第一位,第二位到第二位,依此类推。
将运算符应用于每对位,然后按位构造结果。
非运算的真值表:
a | NOT a |
---|---|
0 | 1 |
1 | 0 |
9 (base 10) = 00000000000000000000000000001001 (base 2)
--------------------------------
~9 (base 10) = 11111111111111111111111111110110 (base 2) = -10 (base 10)
按位非运算时,任何数字x的运算结果都是``-(x + 1)
。例如,〜-5
运算结果为4
。
Note that due to using 32-bit representation for numbers both ~-1
and ~4294967295
(232-1) results in 0
.
请注意,由于对数字~-1
和~4294967295
(232-1) 使用32位表示形式,结果均为0。
例子
使用按位取反
~0; // -1
~-1; // 0
~1; // -2
参考文档MDN