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

如何定义每次调用返回下一个斐波那契数的JavaScript fib()函数?

符合要求的斐波那契函数实现

直接使用立即执行函数表达式(IIFE)封装状态,让fib本身就是每次调用能返回下一个斐波那契数的函数,代码如下:

const fib = (() => {
  let a = 0, b = 1;
  return () => {
    const current = a;
    // 更新斐波那契数列的下一组值
    [a, b] = [b, a + b];
    return current;
  };
})();

为什么这个写法符合要求:

  • 全局作用域仅注入了fib这一个函数名,无额外变量或属性
  • 闭包内部的a和b作为状态变量,每次调用fib()都会更新并返回下一个斐波那契数
  • 调用方式直接是fib(),第一次返回0,第二次返回1,第三次返回1,第四次返回2,以此类推,完全匹配需求

之前写法的问题:

  • 写法1和写法2中的fib都是工厂函数,调用fib()会返回新的生成器函数,而非直接返回斐波那契数,不符合“每次调用fib()返回下一个数”的要求
  • 写法1额外定义了getNextFib变量,违反了“仅将fib函数名注入全局作用域”的限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 07:31:04