설모의 기록

자바스크립트 메모이제이션(Memoization) 패턴 본문

언어/Javascript

자바스크립트 메모이제이션(Memoization) 패턴

HA_Kwon 2017. 12. 16. 22:03

자바스크립트의 함수는 객체이기 때문에 프로퍼티를 가질 수 있습니다. 이 점을 이용해 함수에 프로퍼티를 추가해 결과 값을 캐시하고, 다음 호출 지점에 그 연산을 반복하지 않고 캐시된 프로퍼티의 값을 반환해주는 패턴을 메모이제이션 패턴이라고 합니다.

예를 들어, 파라미터로 양의 정수값을 넣으면 1부터 파라미터 값까지의 합을 구하는 함수를 구현하려고 합니다. 



위의 예제처럼 함수를 구현해도 되지만, 만약 addFunc (1) ~ addFunc(10000) 을 모두 구하고 싶다면 굉장히 많은 반복문을 돌아야 합니다. 이럴 떄 메모이제이션 패턴을 이용해 구현을 하면 반복문을 최소화할 수 있습니다.



위의 예제처럼 구현한다면, cache[number - 1] 에 값이 있을 때 그 값을 가져와 number 와 더해준 후 반환해줍니다. 또한 즉시 실행 함수 내에서 클로저를 이용했기 떄문에 cache 객체를 함부로 수정할 수도 없습니다. 

'언어 > Javascript' 카테고리의 다른 글

async.waterfall() 메소드  (1) 2018.01.08
bcrypt-nodejs 모듈 사용하기  (0) 2018.01.08
Map 과 Set  (0) 2018.01.04
싱글톤(singleton) 패턴  (0) 2017.12.16
자바스크립트 함수  (0) 2017.12.16
Comments