这个memoize功能如何记住'东西?

时间:2017-05-30 15:03:25

标签: javascript memoization

从此来源考虑此memoize函数:https://www.sitepoint.com/implementing-memoization-in-javascript/

function memoize(func) {
  var memo = {};
  var slice = Array.prototype.slice;

  return function() {
    var args = slice.call(arguments);

    if (args in memo)
      return memo[args];
    else
      return (memo[args] = func.apply(this, args));
  }
}

然后考虑定义一个返回任意数字的平方的函数,该函数使用此函数:

var square = memoize(function(num) {
  return num * num; 
}

以下是我不理解的内容:每次调用此square函数时,您似乎再次调用memoize,重新声明memo变量。这个memo变量中的值如何在此函数的不同调用中持续存在?

0 个答案:

没有答案