[JS] Javascript 로 함수 캐시하기

스프링에서 쓰던 캐시처럼 자바스크립트에서도 수행시간이 오래 걸리는 함수를 캐시해서 수행시간을 줄여보자.

캐시되는 함수 생성함수

파라메터로 캐싱할 함수를 넘겨줌

/**
 * 캐시함수 생성함수
 * @param func 생성할 함수
 */
var cache = function(func) {
    var c = {};

    return function(...args) {
        var key = JSON.stringify(args);

        if (!c[key]) {
            console.log('캐시 X');
            c[key] = func(...args);
        } else {
            console.log('캐시 O');
        }

        return c[key];
    };
};

테스트

var test = cache(function(a, b) {
    return a + b;
});

console.log(test(1, 5)); // 캐시 X
console.log(test(1, 5)); // 캐시 O
console.log(test(2, 5)); // 캐시 X
console.log(test(3, 5)); // 캐시 X
console.log(test(1, 5)); // 캐시 O
console.log(test(2, 5)); // 캐시 O