[javascript] 클로저를 활용한 함수 커링
이번 포스트에서는 자바스크립트의 클로저를 활용하여 함수 커링(currying)에 대해 알아보겠습니다.
함수 커링이란 무엇인가요?
함수 커링은 여러 개의 인자를 받는 함수를 하나의 인자를 받는 함수 체인으로 만드는 것입니다. 이를 통해 함수의 재사용성을 높일 수 있고, 코드를 더 읽기 쉽게 만들 수 있습니다.
예를 들어, 다음과 같은 함수가 있다고 가정해봅시다.
function add(a, b) {
return a + b;
}
이 함수를 커링을 활용하여 다음과 같이 바꿀 수 있습니다.
function add(a) {
return function(b) {
return a + b;
}
}
이렇게 하면 add
함수를 호출할 때마다 하나의 인자만을 받는 새로운 함수가 반환되는 구조가 됩니다.
클로저와 함수 커링
클로저를 활용하면 함수 커링을 구현할 수 있습니다. 위의 예제에서와 같이 함수 내부에서 다른 함수를 반환하면서 외부 변수를 접근하는 것이 핵심입니다. 함수가 반환되면서 해당 함수는 반환된 시점의 상위 스코프의 변수에 접근할 수 있게 됩니다.
예를 들어, 자바스크립트에서 클로저를 사용하여 함수 커링을 구현하는 방법은 다음과 같습니다.
function add(a) {
return function(b) {
return a + b;
}
}
const add5 = add(5);
console.log(add5(3)); // 8
위의 코드에서 add
함수는 클로저를 활용하여 5를 더하는 새로운 함수를 반환합니다. 이를 add5
에 할당한 뒤, add5
를 호출하면 5에 3을 더한 결과인 8이 출력됩니다.
함수 커링을 통해 가독성을 높이고, 재사용성을 높일 수 있기 때문에 클로저를 활용한 함수 커링은 자바스크립트에서 유용하게 활용될 수 있습니다.
함수 커링과 클로저에 대해 더 자세히 공부하면 여러분의 코드 작성 능력을 향상시킬 수 있을 것입니다.
참고 자료
- MDN web docs - Closures
- MDN web docs - Currying
- JavaScript: The Good Parts by Douglas Crockford