我遇到了JavaScript中记忆功能的简化示例。然后,它被用来记住一个将2加到传入的数字上的函数。当我看到这一点时,似乎memoize
函数在运行后仍会继续存储cache
变量似乎并不明显由于它不是memoize
的属性,因此(貌似)只是一个普通的局部变量。每当通过memoize
调用plusTwo
时,是否应该覆盖它?在哪里可以找到有关JavaScript中这种行为的更多信息?
var memoize = function(function_) {
var cache = {};
return function() { // What does this function do?
//makes a string out of the arguments of the function that was passed in
var arg_str = JSON.stringify(arguments);
/*
sets the cache value for the arguments to the value that was already calculated
(if available) or calculates the value for the passed in function on its
*/
cache[arg_str] = cache[arg_str] || function_.apply(function_, arguments);
console.log(cache);
// returns the calculated (or cached) value
return cache[arg_str];
};
};
var plusTwo = memoize(function (x) {
return x + 2;
});
module.exports = memoize, plusTwo;