📅  最后修改于: 2023-12-03 14:38:52.472000             🧑  作者: Mango
在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中的一种特殊运算符,它可以将算术运算符和赋值运算符结合在一起,从而让代码更加简洁、优雅。开发者可以根据自己的需要,灵活地运用这些运算符,使代码更加易读、易懂,同时还能提高代码的执行效率。