Front-end/JavaScript
JS FP 7편 - Memoization
파리외 개발자
2023. 3. 12. 00:33
Memoization
메모이제이션은 함수의 동일 동작을 반복해서 처리하지 않고
저장하여 불필요한 반복행위를 방지하는 것이다.
function addTo5(n) {
console.log("calculation...");
return n + 5;
}
addTo5(5);
addTo5(5);
addTo5(5);
함수를 실행할 때마다 매번 같은 연산을 실행한다.
//only one time calculation
function memoizedAddTo5() {
let cache = {};
return function (n) {
if (n in cache) {
return cache[n];
} else {
console.log("calculation...");
cache[n] = n + 5;
return cache[n];
}
};
}
const memoized = memoizedAddTo5();
memoized(5);
memoized(5);
memoized(5);
memoized(10);
memoized(10);
클로져로 작성된 함수에 캐싱 공간을 만들어서
처음 받는 인자값이라면 캐시공간에 저장하고 연산하여 리턴 하지만
이후부터 같은 인자값이 전달된다면 저장된 캐시공간에서 바로 리턴한다.
이처럼 메모이제이션은 같은 연산을 방지하는 것에 의미가 있다.