Memoization, Currying

Memoization ?

memoization is a specific form of caching

function addTo80(n){
  return n+ 80  
}

addTo80(5) // 85
memoization 을 이용해 값을 가져와보자.
let cache = {}; // long time => 85
//cache에 미리 초기값을 적용해 줄 수 있다.
//let cache = { 5: 85 }; // => 85
function memoizedAddTo80(n){
  //cache.n 
  if(n in cache){
   return cache[n];  
  } else{
    console.log('long time');
    cache[n] = n + 80;
    return cache[n];
  }  
}
console.log('1', memoizedAddTo80(5));
// => long time 1 85

//같은 함수가 반복될 경우 cache에서 값을 가져온다.
console.log('2', memoizedAddTo80(5));
// => 2 85

currying ?

currying is the technique of translating the evaluation of a function.

const multiply = (a,b) => a*b;
multiply(3,4)

// currying 를 적용해보자
const curriedMultiply = (a) => (b) => a*b
curriedMultiply(5,3) //undefined
curriedMultiply(5)(3) //15

const curriedMultiplyBy5 = curriedMultiply(5);

//여러번 call 하더라도 curriedMultiply 함수는 1번 실행된다. 
curriedMultiplyBy5(4) //20
curriedMultiplyBy5(4) //20
curriedMultiplyBy5(4) //20

2021, Built with SH