Thief of Wealth

Currying과 Closure를 연관지어서 설명해주세요.

currying 이란?

여러 개의 인자를 가진 함수를 호출할 경우, 파라미터의 수보다 적은 수의 파라미터를 인자로 받으면 누락된 파라미터를 인자로 받는 기법

=> 함수 하나가 N개의 인자를 받는 과정을 n개의 함수로 각각의 인자를 받도록 하는 것.

// curring

function add(a){
  console.log(`${a}`);

  return function(b){
    console.log(`${a} + ${b}`);

    return a+b;
  }
}

// add(1)(2);

이때 add(1)이 선언되는 순간, 위의 함수가 return하는 익명함수는 closure가 되어서,

자신의 실행환경을 기억하는 상태로 동작하기 때문이다.

커링을 사용하면서 장점은, 함수로 "단계"를 나눌 수 있어서 유지보수와 재사용성이 높아진다는 점이다. (어느정도는)

단점은 상위 렉시컬을 참조하므로, 그 depth가 깊어진다면 렉시컬 환경간의 충돌이 일어날 수 있겠다는 생각을 했다. (마치 전역변수)

profile on loading

Loading...