賦值運算符(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