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

JavaScript后置递增与赋值运算符优先级相关疑问求解

问题解答

该现象与运算符优先级规则完全不冲突,本质是混淆了「运算符优先级的作用」和「后置递增运算符本身的求值规则」两个概念,具体逻辑如下:

  • 运算符优先级的作用是决定表达式的运算结合顺序:后置递增优先级高于赋值,意味着表达式var j = i++会先运算i++部分,再将i++的运算结果赋值给j,而非先执行j = i再做递增,这一点完全符合优先级规则。
  • 后置递增(i++)的内置求值规则为:
    1. 先返回变量当前的原始值作为整个表达式的返回结果
    2. 再对变量本身执行+1操作

所以在你的示例中:

  1. 初始i = 1
  2. 运算i++时,先返回原始值1作为该表达式的结果,随后i的值更新为2
  3. 赋值运算将i++的返回值1赋值给j
  4. 最终j的值为1,i的值为2,和运行结果一致。

如果换成优先级相同、但求值规则为「先+1再返回新值」的前置递增运算符++i,运行var j = ++i得到的j就会是2,这一差异和优先级无关,完全是运算符本身的行为定义不同。

补充验证:如果优先级规则不生效,运算顺序变成(j = i)++,会因为j=i的返回结果是不可修改的右值直接抛出语法错误,也从侧面证明优先级规则确实在正常生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:45:08