JavaScript函数在调用后如何存储局部变量?

时间:2019-02-20 13:55:00

标签: javascript function memoization

我遇到了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;

0 个答案:

没有答案