클로저와 메모 친구들

김동하·2021년 6월 3일
0

javascript

목록 보기
58/58
post-thumbnail

오늘 기술 면접을 보다가 클로저를 이용해 캐시 함수 구현을 하라는 임무를 받았다. 이제는 이런 것 간단히 구현할 수 있다고 생각했는데 어버버 거리면서 못했다는 말을 하는 내 자신이 너무 답답해 블로그에 정리를 한다!


function memo(fn){
  
  let a = {};
  return function(x){
    if (x in a) {
      return a[x];
    }
    a[x] = fn(x)
    return a[x];
  }
}

const mFn = memo(fn)
  
mFn(4)
mFn(4)
mFn(6)


function fn(k){
  console.log('inside function');
  return k + 1
}
  • 함수 fn은 인자를 받아 +1을 하고 return한다.
  • 클로저인 함수 memo는 함수 fn을 인자로 받는다.
  • 함수 memo는 익명함수를 리턴하는데 x를 인자를 받고 fn에 x를 준 값을 return
  • 만약 a에 x가 있다면 지역변수 a의 값을 리턴

돌이켜보면 쉬운데 왜 그때는 생각이 나질 않았던 것일까.. 후회하며 김동하는 오늘도 조금 성장..

profile
프론트엔드 개발

0개의 댓글