賦值運算子左側的運算元必須是變數、物件屬性或陣列元素,也稱為左值。例如,下面的寫法是錯誤的,因為左側的值是乙個固定的值,不允許操作。
1 = 100; //返回錯誤
賦值運算有以下兩種形式:
附加操作的賦值運算子
賦值運算子
說明示例
等效於+=
加法運算或連線操作並賦值
a += b
a = a + b
-=減法運算並賦值
a -= b
a= a - b
*=乘法運算並賦值
a *= b
a = a * b
/=除法運算並賦值
a /= b
a = a / b
%=取模運算並賦值
a %= b
a = a % b
<<=
左移位運算並賦值
a <<= b
a = a << b
>>=
右移位運算並賦值
a >>= b
a = a >> b
>>>=
無符號右移位運算並賦值位
a >>>= b
a = a >>> b
&=位與運算並賦值
a &= b
a = a & b
|=位或運算並賦值
a |= b
a = a |= b
^=位異或運算並賦值
a ^= b
a = a ^ b
示例1使用賦值運算子設計複雜的連續賦值表示式。
var a = b = c = d = e = f = 100; //連續賦值
//在條件語句的小括號內進行連續賦值
for((a = b = 1;a < 5;a++) ;)
賦值運算的結合性是從右向左,最右側的賦值運算先執行,然後再向左賦值,以此類推,所以連續賦值運算不會引發異常。
示例2在下面表示式中,邏輯與左側的運算元是乙個賦值表示式,右側的運算元也是乙個賦值表示式。但是左側賦的值是乙個簡單值,右側是把乙個函式賦值給變數b。
var a;
console.log(a = 6 && (b = function())()
);
在邏輯與運算中,左側的賦值並沒有真正的複製給變數 a,當邏輯與運算執行右側的表示式時,該表示式是把乙個函式賦值給變數 b,然後利用小括號運算子呼叫這個函式,返回變數 a 的值,結果並沒有返回變數 a 的值 6,而是 undefined。
由於賦值運算作為表示式使用具有***,使用時要慎重,確保不會引發風險。對上面的表示式更安全的寫法如下:
var a = 6; //定義並初始化變數a
b = function ()
console.log(a && b()); //邏輯與運算,根據a決定是否呼叫函式b
JS賦值運算子詳解
js教程賦值運算子左側的運算元必須是變數 物件屬性或陣列元素,也稱為左值。例如,下面的寫法是錯誤的,因為左側的值是乙個固定的值,不允許操作。1 100 返回錯誤 賦值運算有以下兩種形式 附加操作的賦值運算子 賦值運算子 說明 示例 等效於 加法運算或連線操作並賦值 a b a a b 減法運算並賦值...
JS運算子 算術運算子 比較運算子 賦值運算子
兩邊的變數都是number型別 則是單純的加法運算 當字串出現時 結果是字串型別 字串之後的內容 不論什麼型別 都會被作為字串進行拼接 例子 var num1 10 var num2 20 num num1 num2 var result num1 num2 num1 false console.l...
詳解JS運算子
如果算術運算的值不是數值,那麼js後台會先使用number 轉型函式將其轉換為數值 var num 1 nan nan,只要有乙個nanny就為nan var num 10 10 1010,為字串連線符,有字串就不是加法 var box 你的歲數是 10 10 你的歲數是 1010,被轉換成字串 v...