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

JS编程题DashInsert中循环条件用str.length-1而非str.length的原因

原因解答

核心原因是循环内部要同时访问i和i+1两个位置的元素,边界必须限制在合法索引范围内:

  • JS的字符串、数组索引从0开始计数,合法索引最大值是长度-1。如果循环终止条件写成i < str.length,最后一轮循环的i值等于str.length - 1,此时i+1就等于str.length,已经超出合法索引范围,拿到的值是undefined,做取模运算得到的结果是NaN,判断逻辑完全失效。
  • 你可以代入示例输入验证:比如输入字符串454793的长度是6,合法索引范围是0~5。循环只需要走到i=4就足够了,此时判断的是最后一对相邻元素索引4的9和索引5的3,刚好覆盖所有需要比对的相邻字符对,没有遗漏也不会越界。

如果强行把终止条件改成i < str.length,代码运行也不会抛出显性错误,但最后一轮循环的判断完全是无意义的空转,没有任何作用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:51:04