1. 核心
| 写法 |
术语 |
核心逻辑 |
记忆 |
i++ |
后置 (Postfix) |
先返回当前值,然后再自增。 |
先用后加 |
++i |
前置 (Prefix) |
先自增,然后返回新的值。 |
先加后用 |
2. 基础使用
后置 a++
1 2 3
| let a = 10; console.log(a++); console.log(a);
|
前置 ++a
1 2 3
| let b = 10; console.log(++b); console.log(b);
|
3. 进阶使用
JS 表达式是从左向右执行的。左边的操作对变量做的修改,右边的代码能立刻感知到。
解析 1:k++ + ++k
1 2 3 4 5 6 7 8
| let k = 10;
let result = k++ + ++k; console.log(result);
|
解析 2:++a + a++ + a
1 2 3 4 5 6 7 8
| let a = 1;
let result = ++a + a++ + a; console.log(result);
|
4. 闭包场景
在闭包中,变量会常驻内存,++ 的位置决定了返回给调用者的状态。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| function createCounter() { let count = 0; return { increment1: () => count++, increment2: () => ++count }; }
const a = createCounter(); const b = createCounter(); console.log(a.increment1()); console.log(a.increment1()); console.log(b.increment2()); console.log(b.increment2());
|
最后
- 独立行使用:
i++ 和 ++i 无区别,推荐 i++。
- 赋值/打印:想用旧值写
i++,想用新值写 ++i。
- 复杂计算:千万别写
x = a++ + ++a 这种代码,请拆分成多行,利人利己。
- 计数器:优先用
count++,防止字符串拼接事故。