从此来源考虑此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
变量中的值如何在此函数的不同调用中持续存在?