如何实现无需传参的IIFE斐波那契函数?
实现无参数的斐波那契序列生成函数
可以利用闭包来保存斐波那契序列的状态,通过IIFE创建私有变量,返回的函数每次调用时自动计算并输出下一项,完全不需要传参:
const fibGenerator = (function() { // 初始化前两项,对应首次和第二次调用的输出 let prev = 0, curr = 1; return function() { // 先输出当前的curr值 console.log(curr); // 更新前两项,为下一次调用做准备 [prev, curr] = [curr, prev + curr]; }; })();
调用测试:
fibGenerator(); // 输出1(第一次) fibGenerator(); // 输出1(第二次) fibGenerator(); // 输出2(第三次) fibGenerator(); // 输出3(第四次) fibGenerator(); // 输出5(第五次)
原理说明:
- IIFE立即执行后,创建了私有变量
prev和curr,这两个变量仅在返回的函数内部可访问和更新,不会污染全局作用域。 - 每次调用返回的函数时,先输出当前的
curr值,再通过解构赋值更新prev和curr的取值,确保下一次调用能得到正确的斐波那契项。 - 实现逻辑简单直接,既没有使用数组存储历史项,也不需要每次调用传入参数,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者someStupidGuy
相关产品推荐
相关产品推荐

