자바스크립트에서 Currying을 사용하여 함수의 특정 부분을 부분 적용하는 방법은 무엇인가요?

첫 번째 방법은 익명 함수와 클로저를 사용하는 것입니다. 다음은 Currying을 구현하는 예시 코드입니다.

function curry(fn) {
  return function curried(...args) {
    if (args.length >= fn.length) {
      return fn.apply(this, args);
    } else {
      return function(...moreArgs) {
        return curried.apply(this, args.concat(moreArgs));
      };
    }
  };
}

// 예시로 덧셈 함수를 Currying하기
function add(a, b, c) {
  return a + b + c;
}

const curriedAdd = curry(add);
console.log(curriedAdd(1, 2, 3)); // 6
console.log(curriedAdd(1)(2, 3)); // 6
console.log(curriedAdd(1)(2)(3)); // 6

두 번째 방법은 bind 메서드를 사용하는 것입니다. bind 메서드는 함수를 호출할 때 사용할 this 값과 부분 적용할 인자들을 받아 새로운 함수를 반환합니다.

function add(a, b, c) {
  return a + b + c;
}

const curriedAdd = add.bind(null, 1, 2);
console.log(curriedAdd(3)); // 6

이러한 Currying 기술을 사용하면 함수의 특정 부분을 고정하고 필요에 따라 나머지 인자를 전달하여 원하는 시점에 함수를 호출할 수 있습니다. Currying은 함수형 프로그래밍에서 많이 사용되는 패턴 중 하나이며 코드의 재사용성과 가독성을 높일 수 있는 강력한 도구입니다.

#Currying #자바스크립트