[javascript] 클로저를 활용한 메모이제이션 구현

이번 포스트에서는 자바스크립트에서 클로저를 활용하여 메모이제이션(memoization)을 구현하는 방법에 대해 알아보겠습니다.

메모이제이션이란?

메모이제이션은 이전에 계산한 값을 저장하여, 동일한 입력에 대해 중복 계산을 방지하고 성능을 개선하는 기술입니다.

클로저를 사용한 메모이제이션 구현

아래는 클로저를 활용하여 메모이제이션을 구현한 예제 코드입니다.

function memoize(func) {
  const cache = {};
  return function(...args) {
    const key = JSON.stringify(args);
    if (!cache[key]) {
      cache[key] = func.apply(this, args);
    }
    return cache[key];
  };
}

function expensiveOperation(n) {
  // 복잡한 계산 로직
  return n * 10;
}

const memoizedExpensiveOperation = memoize(expensiveOperation);
console.log(memoizedExpensiveOperation(5)); // 계산 결과를 캐싱하고 반환
console.log(memoizedExpensiveOperation(5)); // 캐시된 값 반환

위 예제에서 memoize 함수는 클로저를 반환하여 cache 객체를 유지하고, 입력값에 대한 결과를 캐싱합니다. 이후 동일한 입력값이 전달될 경우, 캐시된 결과를 반환합니다.

이를 통해 메모이제이션을 구현할 수 있습니다.

결론

클로저를 활용하여 메모이제이션을 구현하면 계산 비용이 많이 드는 작업의 성능을 향상시킬 수 있습니다. 메모이제이션을 통해 중복 계산을 방지하고, 코드의 성능을 개선하는 방법에 대해 알아보았습니다.


위의 예제 코드는 MDN의 클로저 문서에서 참고하여 작성되었습니다.