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

JavaScript函数中变量i未递增:调用digitalRoot(11)输出0

计数变量i未递增的问题分析

核心原因

你传入的参数11是数字类型,JavaScript里的数字没有length属性,导致length = n.length的结果是undefined。此时while (i < length)等价于0 < undefined,这个比较的结果是false,循环体根本没执行,i++自然不会运行,所以最终输出0。

代码里的其他问题

  • 变量i和arr没有用let/const声明,会被挂载到全局作用域,容易引发意外的变量污染问题。
  • 直接对数字使用索引n[i]是无效的,数字不支持按索引访问每一位。

修复后的代码

如果你的需求是提取数字的每一位,可以先把数字转为字符串再处理:

function digitalRoot(n) {
  const strN = n.toString();
  let i = 0;
  const arr = [];
  const length = strN.length;
  while (i < length) {
    arr.push(strN[i]);
    i++;
  }
  console.log(i); // 此时输出2
}

digitalRoot(11);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:48:24