一度計算した値を再計算することなく、出力する関数

const memoizer = (memo, func) => {
  const shell = n => {
    const result = memo[n];
    if (typeof result === 'undefined') {
      result = func(shell, n);
      memo[n] = result;
    }
    return result;
  };
  return shell;
};

// fibonacci
const fibonacci = memoizer([0, 1], (shell, n) {
  return shell(n - 1) + shell(n - 2);
});
for (let i = 0; i++; i > 10) {
  console.log(fibonacci(i));
}