JavaScript中自增(++)和自减(--)运算符的计算结果取决于前缀或后缀形式:前缀先更新再使用新值,后缀先使用原值再更新;复杂表达式中按从左到右求值且副作用立即发生;非数字操作数会尝试类型转换。

JavaScript 中自增(++)和自减(--)运算符的计算结果,取决于它们是写在操作数**前面**(前缀)还是**后面**(后缀),这直接决定表达式中使用的是“原值”还是“新值”。
前缀形式(++x 或 --x)
先对变量执行加 1 或减 1,再将**更新后的值**用于当前表达式。
-
let a = 5; let b = ++a;→a变成 6,b也等于 6 -
let x = 10; console.log(--x + 2);→ 先x变为 9,再计算9 + 2,输出 11
后缀形式(x++ 或 x--)
先用变量的**当前值**参与表达式运算,之后再对变量加 1 或减 1。
-
let a = 5; let b = a++;→b得到 5,然后a才变成 6 -
let y = 3; console.log(y-- * 4);→ 先算3 * 4得 12,再把y改为 2
在复杂表达式中要注意求值顺序
JavaScript 按照从左到右的顺序对操作数求值,但自增/自减的副作用(修改变量)会在对应位置立即发生。
-
let i = 0; console.log(i++ + ++i);步骤:取i原值 0(然后i→1),再++i使i→2 并取 2,结果为0 + 2 = 2 - 这类写法易出错、可读性差,实际开发中应避免在同一表达式中多次修改同一变量
类型转换与非数字值的处理
如果操作数不是数字,JavaScript 会尝试转为数字再运算:
-
let s = "5"; console.log(s++);→ 输出 5(字符串转数字成功),s变成 6 -
let t = "abc"; console.log(t++);→ 输出NaN,t变成NaN(因为"abc"转数字失败) -
null会被转为0,undefined转为NaN
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











