반응형
커링 함수란?
여러 개의 인자를 받는 함수를 하나의 인자만 받는 함수로 나눠서 "순차적"으로 호출될 수 있게 체인 형태로 구성한 것.
필요한 인자 갯수만큼 함수를 만들어 계속 리턴해주다가 마지막에 조합해서 리턴한다.
한 번에 하나의 인자만 전달하는 것이 원칙이고,
마지막 인자가 전달되기 전까지는 원본 함수가 실행되지 않는다. (마지막 인자가 넘어갈 때까지 함수 실행을 미루는 셈)
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 |
댓글