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

for循环后置语句变量递增赋值问题:为何部分写法无法正常递增

为啥你的第一个for循环变量没法正常递增?

嘿,这个问题问得好!虽然你知道这不是多变量操作的最优解,但搞清楚背后的逻辑确实能帮你更理解JS的表达式和赋值规则~

先看你写的第一个循环的后置语句:

i1, i2 = i1+4, i2+4

这里的核心问题是你没有对i1做任何赋值操作,而且对i2的赋值也只是用了i1+4(没修改i1本身),最后那个i2+4更是只算了个值,没存回去。

我们拆解这个后置语句的执行顺序(JS里逗号运算符会从左到右依次执行每个表达式,每个表达式的副作用会生效,但只返回最后一个表达式的值):

  • 第一个表达式i1:只是读取i1的当前值(初始是0),没有任何修改;
  • 第二个表达式i2 = i1+4:把i1+4(也就是0+4=4)赋值给i2,i2变成4,但i1还是0;
  • 第三个表达式i2+4:计算4+4=8,但这个结果没有赋值给任何变量,i2依然是4。

所以每次循环,i1永远停在初始的0,i2每次被重置为4,自然永远没法超过4啦!

再看第二个循环的后置语句:

i1, i2 = i1+=4, i2+=4

这里关键用了复合赋值运算符+=——它和单纯的+完全不同:i1+=4等价于i1 = i1+4,不仅会计算新值,还会把结果赋值回给i1,直接修改了变量本身。

同样拆解执行顺序:

  • 第一个表达式i1:还是读取值,没修改;
  • 第二个表达式i2 = i1+=4:先执行i1+=4,i1从0变成4,然后把这个更新后的i1值(4)赋值给i2,此时i2是4;
  • 第三个表达式i2+=4:执行i2 = i2+4,i2从4变成8。

所以每次循环,i1都会加4,i2也会在被赋值为i1的新值后再加4,自然能正常递增啦!

不过顺便提一句,如果你想让i1和i2每次都各自加4,其实更清晰的写法是把后置语句写成:

i1 +=4, i2 +=4

这样就不用绕逗号赋值的弯子,可读性也更高~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:17:51