JS赋值运算符详解

赋值运算符左侧的操作数必须是变量、对象属性或数组元素,也称为左值。例如,下面的写法是错误的,因为左侧的值是一个固定的值,不允许操作。

  1. 1 = 100; //返回错误

赋值运算有以下两种形式:

  • 简单的赋值运算=:把等号右侧操作数的值直接复制给左侧的操作数,因此左侧操作数的值会发生变化。
  • 附加操作的赋值运算:赋值之前先对右侧操作数执行某种操作,然后把运算结果复制给左侧操作数。具体说明如表所示。
赋值运算符说明示例等效于
+=加法运算或连接操作并赋值a += ba = a + b
-=减法运算并赋值a -= ba= a - b
*=乘法运算并赋值a *= ba = a * b
/=除法运算并赋值a /= ba = a / b
%=取模运算并赋值a %= ba = a % b
<<=左移位运算并赋值a <<= ba = a << b
>>=右移位运算并赋值a >>= ba = a >> b
>>>=无符号右移位运算并赋值位a >>>= ba = a >>> b
&=位与运算并赋值a &= ba = a & b
\=位或运算并赋值a \= ba = a \= b
^=位异或运算并赋值a ^= ba = a ^ b

示例1

使用赋值运算符设计复杂的连续赋值表达式。

  1. var a = b = c = d = e = f = 100; //连续赋值
  2. //在条件语句的小括号内进行连续赋值
  3. for((a = b = 1;a < 5;a++) {console.log(a + "" + b)};)

赋值运算的结合性是从右向左,最右侧的赋值运算先执行,然后再向左赋值,以此类推,所以连续赋值运算不会引发异常。

示例2

在下面表达式中,逻辑与左侧的操作数是一个赋值表达式,右侧的操作数也是一个赋值表达式。但是左侧赋的值是一个简单值,右侧是把一个函数赋值给变量b。

  1. var a;
  2. console.log(a = 6 && (b = function(){
  3. return a;
  4. })()
  5. );

在逻辑与运算中,左侧的赋值并没有真正的复制给变量 a,当逻辑与运算执行右侧的表达式时,该表达式是把一个函数赋值给变量 b,然后利用小括号运算符调用这个函数,返回变量 a 的值,结果并没有返回变量 a 的值 6,而是 undefined。

由于赋值运算作为表达式使用具有副作用,使用时要慎重,确保不会引发风险。对上面的表达式更安全的写法如下:

  1. var a = 6; //定义并初始化变量a
  2. b = function () { //定义函数对象b
  3. return a;
  4. }
  5. console.log(a && b()); //逻辑与运算,根据a决定是否调用函数b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智慧浩海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值