📜  4.7.2.复合赋值运算符¶ - Javascript (1)

📅  最后修改于: 2023-12-03 14:38:52.472000             🧑  作者: Mango

4.7.2.复合赋值运算符

在JavaScript中,除了常见的算术运算符外,还存在着一些称为复合赋值运算符的特殊运算符,它们可以将运算符左侧的变量与右侧的值进行运算,并将结果赋值给运算符左侧的变量。

算术运算符和复合赋值运算符

在JavaScript中,常用的算术运算符包括加(+), 减(-), 乘(*), 除(/)和求余(%)等。这些运算符可以与赋值运算符配合使用,从而形成一系列复合赋值运算符,如下所示:

| 运算符 | 描述 | |--------|------------------------| | += | 加法赋值运算符 | | -= | 减法赋值运算符 | | *= | 乘法赋值运算符 | | /= | 除法赋值运算符 | | %= | 求余赋值运算符 | | **= | 幂运算符赋值运算符 | | <<= | 左移位赋值运算符 | | >>= | 右移位赋值运算符 | | >>>= | 无符号右移位赋值运算符 |

这些复合赋值运算符使用方式非常简单,例如:

let a = 10;
a += 5;   // 相当于 a = a + 5,这里a的值变为15
a -= 3;   // 相当于 a = a - 3,这里a的值变为12
a *= 2;   // 相当于 a = a * 2,这里a的值变为24
a /= 4;   // 相当于 a = a / 4,这里a的值变为6
a %= 5;   // 相当于 a = a % 5,这里a的值变为1

除了常规的算术运算符,JavaScript中还支持另外三个特殊的复合赋值运算符:幂运算符赋值运算符(**=)、左移位赋值运算符(<<=)和右移位赋值运算符(>>=)。它们的功能分别如下:

  • 幂运算符赋值运算符(**=):将运算符左侧的数字乘以右侧的数字,然后将结果赋值给左侧的数字。
  • 左移位赋值运算符(<<=):将运算符左侧的数字按位左移右侧的数字指定的位数,然后将结果赋值给左侧的数字。
  • 右移位赋值运算符(>>=):将运算符左侧的数字按位右移右侧的数字指定的位数,然后将结果赋值给左侧的数字。

例如:

let a = 3;
a **= 3;     // 相当于 a = a ** 3,这里a的值变为27
a <<= 1;     // 相当于 a = a << 1,这里a的值变为54
a >>= 2;     // 相当于 a = a >> 2,这里a的值变为13
复合赋值运算符的应用

复合赋值运算符虽然数量不多,但是它们非常实用,特别是在编写循环体和递归函数时,可以发挥出非常强大的威力。

下面是一个利用复合赋值运算符编写的求阶乘的例子:

function factorial(num) {
  let result = 1;
  for (let i = 1; i <= num; i++) {
    result *= i;
  }
  return result;
}
console.log(factorial(5));   // 输出:120

可以看到,在循环体中,使用了复合赋值运算符*=运算result和i,从而避免了使用“a = a * b”的冗长代码。这样一来,代码更加简洁,性能也有很大提升。

小结

复合赋值运算符是JavaScript中的一种特殊运算符,它可以将算术运算符和赋值运算符结合在一起,从而让代码更加简洁、优雅。开发者可以根据自己的需要,灵活地运用这些运算符,使代码更加易读、易懂,同时还能提高代码的执行效率。