You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript自增自减运算符运算结果存疑,请求专业解惑

解析自增自减表达式的运算误区

先看你给出的代码:

let i = 1; i = i++ - --i + ++i - i--; console.log(i);

执行结果为0,你的预期和实际运算值不符,核心误区在于对自增自减的变量修改时机和表达式运算顺序+最终赋值的理解偏差,下面一步步拆解:

运算全程拆解(初始i=1)

  1. 第一步:i++

    • 后自增规则:先返回当前变量值1,再将i自增为2
    • 此时表达式已计算部分:1 - --i + ++i - i--,当前i=2
  2. 第二步:--i

    • 前自减规则:先将i从2自减为1,再返回修改后的值1
    • 此时表达式已计算部分:1 - 1 + ++i - i--,当前i=1
  3. 第三步:++i

    • 前自增规则:先将i从1自增为2,再返回修改后的值2
    • 此时表达式已计算部分:1 - 1 + 2 - i--,当前i=2
  4. 第四步:i--

    • 后自减规则:先返回当前变量值2,再将i自减为1
    • 此时表达式完整计算结果:1 - 1 + 2 - 2 = 0
  5. 最终赋值

    • 整个表达式的结果0会赋值给变量i,覆盖掉第四步自减后的i=1,所以最终console.log(i)输出0

你的核心理解误区

  • 误区1:错误地认为自增自减的“生效”是和初始值绑定的独立链条,实际上每一次自增/自减操作都会立即修改变量本身,后续所有操作都基于修改后的最新变量值,而不是你预设的初始值推导链条
  • 误区2:忽略了整个表达式计算完成后,会把最终结果重新赋值给i,这一步会覆盖掉最后一次自增/自减操作后的值

内容的提问来源于stack exchange,提问作者namco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 21:57:43