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

JS中do...while循环为何CODE A返回数字序列CODE B返回求和结果?

问题原因解释

这个差异本质是JavaScript中+运算符的重载规则,会根据操作数的类型判断执行逻辑:

  • CODE A的逻辑:
    counter的初始值是空字符串'',属于字符串类型。每次执行counter = counter + i时,JS会自动将数值类型的i转为字符串,执行字符串拼接逻辑,所以循环结束后得到的是1到14依次拼接的数字序列。
  • CODE B的逻辑:
    counter的初始值是数值4,属于数字类型。每次执行counter = counter + i时,两边操作数都是数字类型,+会执行算术加法逻辑。
    可以手动计算验证结果:1到14的累加和为(1+14)*14/2=105,加上初始的4刚好是109,和输出结果完全匹配。

补充说明:JavaScript属于弱类型语言,运算符执行前会隐式做类型转换,除了+之外,-、*、/等运算符都会默认把操作数转成数值再做算术运算,只有+存在字符串拼接和数值加法两种重载逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:45:01