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

JS生成斐波那契数列时前两项返回undefined的问题排查

问题分析与修复方案

嘿,这问题其实很常见,就是函数返回语句的位置不对!

你的代码逻辑本身没问题,但仔细看:只有在n>2的else分支里写了return output,而处理n=1和n=2的两个条件分支,仅仅给output赋值了,却没有返回这个数组。函数执行完这两个分支后,没有遇到任何return语句,就会默认返回undefined,这就是你遇到的问题啦。

修复后的代码

我们只需要把return语句移到函数的最后,让所有分支执行完毕后统一返回output就行,这样不管n是1、2还是更大的值,都能得到正确的数组:

function generator(n) {
  var output = [];
  var num1 = 0;
  var num2 = 1;
  var next;

  if (n === 1) {
    output = [0];
  } else if (n === 2) {
    output = [0, 1];
  } else {
    output = [num1, num2];
    for (var count = 2; count < n; count++) {
      next = num1 + num2;
      num1 = num2;
      num2 = next;
      output.push(next);
    }
  }
  // 统一返回,覆盖所有情况
  return output;
}

测试验证

现在测试几个值:

  • generator(1) → [0](正确)
  • generator(2) → [0, 1](正确)
  • generator(6) → [0, 1, 1, 2, 3, 5](正确)

当然,你也可以选择在每个条件分支里单独加return output,不过把返回语句统一放在最后会让代码更整洁易读~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:34:22