JavaScript中常见的复合赋值运算符有+=、-=、=、/=、%=、*=,它们将计算与赋值合并为一步,等价于“变量 = 变量 运算符 表达式”,且右侧表达式先求值、支持类型转换、对undefined/null会转为NaN。

JavaScript 中的赋值与计算组合,主要靠“复合赋值运算符”来简化写法,它们不是新运算,而是把计算和赋值合在一起的一体化操作,既简洁又易读。
常见的复合赋值运算符有哪些
这些运算符形式统一:`变量 运算符= 表达式`,等价于 `变量 = 变量 运算符 表达式`(注意是“原值参与运算”,不是右值直接覆盖)。
- +=:加后赋值,a += 3 等价于 a = a + 3
- -=:减后赋值,b -= 2 等价于 b = b - 2
- *=:乘后赋值,c *= 4 等价于 c = c * 4
- /=:除后赋值,d /= 5 等价于 d = d / 5
- %=:取余后赋值,e %= 3 等价于 e = e % 3
- **=:幂后赋值(ES2016),f **= 2 等价于 f = f ** 2
要注意的几个关键细节
复合赋值看似简单,但实际执行时有隐含逻辑,容易踩坑:
在调试 Java 后端 API 故障时使用此技能,尤其适用于以下任务:分析日志、跨 Controller、Service 和 Mapper 层追踪请求、定位异常根因、检查 SQL 执行或参数流转,以及生成简洁的诊断结论与修复方案。
- 右侧表达式会先完整求值,再和左侧变量的当前值运算。例如 x = 5; x += y + 1,等价于 x = x + (y + 1),括号不能省
- 类型自动转换照常发生。比如 str = "hello"; str += 123 结果是 "hello123"(字符串拼接),不是报错
- 对 undefined 或 null 使用复合赋值,会触发隐式转换: let a; a += 5 得到 NaN(因为 undefined + 5 → NaN)
自增/自减不是复合赋值,但常被混淆
++ 和 -- 是独立的“一元运算符”,作用是“修改并返回值”,和 += 1 行为相似但不完全等价:
立即学习“Java免费学习笔记(深入)”;
- i++ 是“先用后加”,++i 是“先加后用”
- i += 1 没有这种顺序差异,它总是先算 i + 1 再赋回 i,且只执行一次赋值
- 多数场景下推荐用 += 1,语义更清晰、不易出错
实际写代码时的小建议
- 优先用复合赋值替代重复变量名写法,提升可读性,比如把 count = count + 1 改成 count += 1
- 避免链式复合赋值(如 a += b += c),可读性差,且执行顺序依赖求值规则,容易误判
- 在循环或累计逻辑中,复合赋值能减少笔误,比如 sum += item.price 比 sum = sum + item.price 更不容易漏掉左边的 sum

















