var fibo = function (x) {
  console.log(x);
  if (x === 1) return 1;
  if (x === 2) return 2;
  return fibo(x - 1) + fibo(x - 2);
};

// fibo = _.memoize(fibo);
var fibom = _.memoize(fibo);
console.log(fibom(5));

<script src="https://cdn.jsdelivr.net/lodash/4.17.2/lodash.min.js"></script>





为什么将memoize分配给原始函数变量名称(如注释的代码所示)而不显示给新变量时起作用?

最佳答案

当您将记忆功能分配给新变量时,递归调用仍将转到未记忆的版本。您需要像在注释掉的代码中一样覆盖引用。

10-08 16:59