前置(++i/--i)先改值再取值,后置(i++/i--)先取值再改值;单独使用效果相同,但参与表达式时结果不同:需新值立即生效用前置,需旧值再更新用后置。

关键看“改值”和“取值”的先后顺序:前置(++i、--i)先改值再参与运算;后置(i++、i--)先拿当前值参与运算,再改值。单独一行使用时效果一样,一旦放进赋值、计算或函数调用里,结果就不同了。
什么时候用前置(++i / --i)
当你希望变量更新后的新值立刻生效,比如显示在页面上、参与下一步计算,就该用前置。
- 按钮点击计数时,要让数字“点完就变”,写
tracker.textContent = ++i,而不是i++ - 循环中需要先加1再判断,如
while (++count ,避免多执行一次 - 配合条件判断防止越界,例如
if (i > 0) tracker.textContent = --i,确保减完再显示
什么时候用后置(i++ / i--)
当你确实需要“用旧值,再更新”,比如遍历数组索引、保存当前状态后再推进。
- 传统 for 循环里常用
for (let i = 0; i ,因为每次用的是本轮的 i,结束后再加1 - 想记录当前值再递增,比如日志打印:
console.log("当前是", i++);,输出旧值,之后 i 才加1 - 实现类似“返回前一个值”的逻辑,如队列出队:
return items[index++];
容易踩坑的几种情况
混用或误解返回值,会导致逻辑错位,尤其在事件处理中表现明显。
立即学习“Java免费学习笔记(深入)”;
-
i++ + ++i是未定义行为,不同引擎结果可能不同,应绝对避免 - 写
tracker.innerHTML = i++,页面总比变量“慢一拍”,首次点击不显示变化 - 对常量或表达式用自增/自减,如
5++或(a + b)++,会直接报错 - 在 if 条件里用
if (i++ ,虽然语法合法,但可读性差,建议拆成两行
实用建议
养成明确意图的习惯,别为了少打几个字符而牺牲可读性。
- 多数场景推荐用前置(
++i),语义更直白:“我要先加,再用” - 用
let声明变量,避免var提升带来的意外作用域问题 - 显示文本优先用
textContent而非innerHTML,更安全也更语义化 - 涉及边界(如计数归零、下标越界),务必加判断,不能只靠自增/自减本身


















