组合赋值运算符如 += 和 = 可简化代码,提升可读性:+= 常用于累加(如 total += n),= 适用于累乘(如 result *= i);需注意初始值类型,避免字符串拼接错误。

JavaScript 中用 += 和 *= 这类组合赋值运算符,能直接在原变量基础上做加法或乘法,省去重复写变量名的麻烦,代码更简洁、可读性更高。
累加用 += 最常见
每次循环或计算中增加一个值时,不用写 sum = sum + value,直接用 sum += value 即可。
-
基础用法:
let count = 0; count += 5;等价于count = count + 5;,结果是5 -
遍历数组求和:
const nums = [1, 2, 3]; let total = 0; nums.forEach(n => total += n);—— 比total = total + n少打 5 个字符,逻辑更紧凑 -
注意类型:如果
total初始是字符串(如""),+=会触发字符串拼接,不是数值相加。要确保初始值是数字(如0)
累乘用 *= 很直观
计算连乘(比如阶乘、权重累积)时,product *= factor 比 product = product * factor 更轻量。
-
例子:算 5 的阶乘:
let result = 1; for (let i = 2; i —— 最终 <code>result是120 -
避免初始值错误:
*=的初始值不能为0(否则后续全为 0),通常从1开始 -
支持小数和负数:
let scale = 1; scale *= 0.5; scale *= -2;结果是-1,运算过程清晰
其他组合赋值也能辅助累计逻辑
虽然 += 和 *= 是主力,但类似操作在特定场景下也实用:
立即学习“Java免费学习笔记(深入)”;
-
-=:递减累计,如倒计时或扣减余额balance -= price -
/=:逐次缩放,如平均值计算中先累加再统一除以数量,也可在过程中逐步缩小avg /= n(较少见,需谨慎语义) -
**=:幂累积,比如连续平方value **= 2,适合迭代幂运算
和纯函数式写法的对比提醒
组合赋值依赖副作用(修改原变量),和 reduce 这类无副作用写法目标不同:
- 想强调“过程”或性能敏感(避免反复创建新值),用
+=/*=更自然 - 想保持不可变、利于调试或函数式风格,可用
nums.reduce((a, b) => a + b, 0) - 两者不互斥:循环内用组合赋值,外部仍可封装成纯函数


















