Home > Back-end >  IIFE Fibonacci function without value
IIFE Fibonacci function without value

Time:12-16

guys. Hope everything is well with you.

I need to make an IIFE function, which can be declared without entering of any values:

const fibonacciConst = function fibonacciFunction() {
        // using helper function;
}

fibonacciConst(); // 1 in console.log
fibonacciConst(); // 1 in console.log
fibonacciConst(); // 2 in console.log
fibonacciConst(); // 3 in console.log
fibonacciConst(); // 5 in console.log

Mine code is working only with value in IIFE, that's the problem:

function fibonacciFunction() { 
    (function helperFibonacci(n) {
    let a = 0, b = 1, c = n;
    for(let i = 2; i <= n; i  ) {
        c = a   b;
        a = b;
        b = c;
    }
    console.log(c);
    return c;
})(8); // without value here will be 'undefined'
}

const fibonacciConst = fibonacciFunction();

fibonacciConst; // 21 in console.log

I understood that in this task we need 2 functions: 1 function will be declaring another IIFE function inside, which is calculating result. The solution is preferably as simple as possible. Unfortunately, most solutions in google require you to enter a value, or difficult way with array, arrow functions etc. :(

CodePudding user response:

You need to keep the state around somehow. One option would be a closure:

function makeFibonacci() {
    let a = 0, b = 1

    function inner() {
        [a, b] = [b, a   b]
        return a
    }

    return inner
}

let fib = makeFibonacci()

console.log(fib(), fib(), fib(), fib(), fib(), fib(), fib(), fib(), fib(), fib(), fib(), fib(), )

  • Related