赋值运算符(assignment operator)是将右边操作数(right operator)的值赋值给左边的操作数(left operator)

如果在等号( = )前面再添加乘性操作符、加性操作符或位操作符,就可以完成复合赋值操作。这种复合赋值操作相当于是对常规表达式的简写。

var num = 10;
num = num +10//等价于
var num = 10;
num += 10;

每个主要算数运算符(以及个别的其他操作符)都有对应的符合赋值操作符,这些操作符如下:

名称 简写 含义
赋值(Assignment) a = b a = b
加赋值(Addition assignment) a += b a = a + b
减赋值(Subtraction assignment) a -= b a = a - b
乘赋值(Multiplication assignment) a *= b a = a * b
除赋值(Division assigment) a  /= b a = a / b
模赋值(Remainder assignment) a %= b a = a % b
指数赋值(Exponentiation assignment) a **= b
a = a ** b
左移赋值(Left shift assignment) a <<= b a = a << b
右移赋值(Right shift assignment) a >>= b
a = a >> b
无符号右移赋值(Unsigned right shift assignment) a >>>= b
a = a >>> b
按位与赋值(Bitwise AND assignment) a &= b a = a & b
按位异或赋值(Bitwise XOR assignment) a ^= b a = a ^ b
按位或赋值(Bitwise OR assignment) a |= b a = a | b

 

一、赋值

简单的赋值运算,就是将一个值赋给一个变量。

如果想把一个值赋给多个变量,可以采用链式使用赋值运算符。

语法:

a = b

实例:

// 假设有以下变量
a = 2;
b = 9;
c = 7;

a = b;
//将 b的值赋给 a,所以a 的值为 9
a = b = c
//将 c 的值赋给 b,b的值是 7,再将 b的值赋给 a,所以 a、b、c的值都是 7

 

二、加赋值

加赋值运算符把一个右值和一个变量相加,然后把相加的变量赋值给该变量。

两个操作符的类型决定加赋值运算符的行为。算数相加或是字符串连接都有可能。

语法

a += b
//等价于
a = a + b

实例:

//定义下列变量
aa = 'aa';
bb = 8;
cc = true

//加赋值运算遵循着算数加运算符的规则
bb += 1 
// 数字相加  9;实例:
                        
cc += 8
//布尔值与数字相加  9

aa += false
// 布尔值与字符串相加 'aafalse'

aa += bb
// 布尔值与数字相加拼串 'aa8'

 

三、减赋值

减赋值运算符使一个变量减去右值,然后把结果赋给变量。

语法:

a -= b
//等价于
a = a - b

实例:

// 定义下面的变量
// aa = 2

aa -= 3   
//aa的值为 -1
aa -= 'wo'
//返回值为 NaN

 

四、除赋值

除赋值运算符使一个变量除以右面的值,并且将结果赋值给该变量。

语法:

a /= b
//等价于
a = a / b

实例:

// 假定已定义了下面的变量
//  aa= 5

aa /= 2     // 2.5
aa /= "foo" // NaN
aa /= 0     // Infinity

 

五、模赋值

模赋值运算使一个变量除以右值,然后把余数赋值给该变量。

语法:

a %= b
//等价于
a = a % b

实例:

//假设一个变量
a = 5

a %= 2     // 1
a %= 'foo' // NaN
a %= 0     // NaN

 

六、左移赋值

左移赋值运算符使变量向左移动指定位数的比特位,然后将结果赋给该变量。

语法:

a <<= b
//等价于
a = a << b

实例:

var aa = 5; //  (00000000000000000000000000000101)
aa <<= 2; // 20 (00000000000000000000000000010100)

 

七、右移赋值

右移赋值运算符使变量向右移动指定位数的比特位,然后将结果赋值给变量

语法:

a >>>= b
//等价于
a = a >>> b

实例:

var bar = 5; //   (00000000000000000000000000000101)
bar >>= 2;   // 1 (00000000000000000000000000000001)

var bar = -5; //    (-00000000000000000000000000000101)
bar >>= 2;  // -2 (-00000000000000000000000000000010)

 

八、无符号右移赋值

无符号右移赋值运算符向右移动指定数量的比特位,然后把结果赋给变量

语法:

a >>>= b
//等价于
a = a >>> b

实例:

var bar = 5; //   (00000000000000000000000000000101)
bar >>>= 2;  // 1 (00000000000000000000000000000001)

var bar = -5; // (-00000000000000000000000000000101)
bar >>>= 2; // 1073741822 (00111111111111111111111111111110)

 

九、按位与赋值

按位与赋值使用两个操作值的二进制进行表示,执行二进制异或运算,并且把结果赋值给变量。

 语法:

a ^= b
//等价于
a = a ^ b

实例:

var bar = 5;
// 5:     00000000000000000000000000000101
// 2:     00000000000000000000000000000010
bar &= 2; // 0

 

十、按位或赋值

按位或运算符使用两个操作值的二进制进行表示,执行按位或运算,并且把结果赋给变量。

语法:

a |= b
//等价于
a = a | b

实例:

var bar = 5;
bar |= 2; // 7
// 5: 00000000000000000000000000000101
// 2: 00000000000000000000000000000010
// -----------------------------------
// 7: 00000000000000000000000000000111

 

 

参考资料:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Assignment_Operators

posted on 2020-01-17 17:22  Cloud%  阅读(1330)  评论(1编辑  收藏  举报