currying

❓질문

커링(currying)이란 무엇인지 설명하고, 활용 예시를 들어줄 수 있나요?


💡 조사하기전 내가 알고 있던 내용

커링이란 파라미터를 받는 함수가 있다고 했을때

function A(a,b){
	return a + b
}

이런식으로 사용하는 함수가아니라

function A(a){ 
	return function B(b){
	  return a + b
	}
}

이런식으로 함수를 잘게 나누어 여러개의 파라미터의 함수를 단일 파라미터 함수로 나누는 기법입니다.

이 방식을 활용할려면 클로저와 일급함수를 어느정도 이해하고 있으면 편합니다.
커링의 장점으로 코드의 재활용이 쉬워진다는 점이 있는데.

위 코드를 다시 사용하여 가정을하나 해보자면 a에는 5를 자주넣는 경우가 있다고 치면

const A5 = A(5);

console.log(A5(10)) // 15
console.log(A5(15)) // 20

이런식으로 클로저( 선언됐을때의 환경을 기억하는 특성 )을 활용하여 사용이 가능합니다.


🏫 정리한 내용

요약하자면 재사용성이나 유연성은 증가하는 반면 함수를 작성하는편이 길어지고 여러 함수가 호출되니 메모리상에서 불리할 수 있습니다. 그리고 단순하게 작성하기보단 화살표 함수를 활용하여 함수를 작성하는 경우도 있고 함수를 나눠서 작성하는 경우도있으니 커링을 해본 경험이 있고 없고 러닝커브의 차이가 생긴다는 것 입니다.