본문 바로가기
JavaScript

커링 함수

by whoyoung90 2022. 5. 21.
반응형

커링 함수란?

여러 개의 인자를 받는 함수를 하나의 인자만 받는 함수로 나눠서 "순차적"으로 호출될 수 있게 체인 형태로 구성한 것.

 

필요한 인자 갯수만큼 함수를 만들어 계속 리턴해주다가 마지막에 조합해서 리턴한다.

 

한 번에 하나의 인자만 전달하는 것이 원칙이고,

마지막 인자가 전달되기 전까지는 원본 함수가 실행되지 않는다. (마지막 인자가 넘어갈 때까지 함수 실행을 미루는 셈)

 

const curry = func => a => b => c => d => func(a, b, c, d);
const maxNumber = curry(Math.max);

console.log(maxNumber(1));          // f()
console.log(maxNumber(1)(2));       // f()
console.log(maxNumber(1)(2)(3));    // f()
console.log(maxNumber(1)(2)(3)(4)); // 4

 

각 단계에서 받은 인자들은 모두 마지막 단계에서 참조할 것이므로

가비지 컬렉팅되지 않고 메모리에 차곡차곡 쌓였다가,

마지막 호출로 실행 컨텍스트가 종료된 후에야 수거 대상이 된다. => 클로저의 활용 예시!


공통적인 요소들은 미리 넘겨서 반환된 함수를 저장시켜놓고, 이후에 가변 인자만 받아서 처리할 수 있는 원리로써

 

Redux 미들웨어에서 활용된다고 하므로 기억해두자.

 

 

반응형

'JavaScript' 카테고리의 다른 글

프로토타입(prototype) 디렉터리 구조  (0) 2022.05.28
프로토타입(prototype)  (0) 2022.05.22
클로저 활용 예시 (2)  (0) 2022.05.01
클로저 활용 예시 (1)  (0) 2022.03.31
setInterval과 addEventListener  (0) 2022.03.31

댓글