JavaScript 赋值运算
■知识点
赋值运算有以下两种形式。
简单的赋值运算(=):把等号右侧操作数的值,直接复制给左侧的操作数,因此左侧操作数的值会发生变化。
附加操作的赋值运算:赋值之前先对右侧操作数执行某种操作,然后把运算结果再复制给左侧操作数,具体说明如表所示。
赋值运算符 | 说 明 | 示 例 | 等效于 |
+= | 加法运算或连接操作并赋值 | 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 |
■实例设计
使用赋值运算符设计复杂的连续赋值表达式。
var a = b = c = d = e = f = 100; //连续赋值
//在条件语句的小括号内进行连续赋值
for(var a = b = 1; a < 5; a ++ ){ console.log(a + "" + b ); }
赋值运算符的结合性是从右向左,所以最右侧的赋值运算先执行,然后再向左赋值,以此类推,所以连续赋值运算不会引发异常。
在下面的表达式中,逻辑与左侧的操作数是一个赋值表达式,右侧的操作数也是一个赋值表达式,但是左侧赋的值是一个简单值,右侧是把一个函数赋值给变量b。
在逻辑与运算中,左侧的赋值并没有真正地复制给变量a,当逻辑与运算执行右侧的表达式时,该表达式是把一个函数赋值给变量b,然后利用小括号运算符调用这个函数,返回变量a的值,结果并没 有返回变量a的值为6,而是undefined。
var a; //定义变量a
console.log(a = 6 && (b = function(){ //逻辑与运算表达式
return a; //返回变量a的值
})()
); //结果返回undefined
由于赋值运算作为表达式使用具有副作用,使用时要慎重,确保不会引发风险。对于上面的表达式,更安全的写法如下。
var a = 6; //定义并初始化变量a
b = function 0 { //定义函数对象b
return a;
}
console, log (a && b()); //逻辑与运算,根据a决定是否调用函数b
点击加载更多评论>>