자바스크립트에서 Currying을 사용하여 함수의 인자를 어떻게 동적으로 선택할 수 있나요?

자바스크립트에서 Currying은 함수를 선언할 때 인자를 분리하여 여러 함수로 만들 수 있는 기법입니다. 이를 통해 함수의 인자를 동적으로 선택할 수 있게 되며, 코드의 재사용성과 가독성을 높일 수 있습니다.

Currying을 사용하여 함수의 인자를 동적으로 선택하기 위해서는 다음과 같은 단계를 따를 수 있습니다:

  1. 첫 번째 함수를 선언하고 필요한 인자를 받습니다.
  2. 첫 번째 함수 내부에서 두 번째 함수를 반환하고, 두 번째 함수는 추가적인 인자를 받습니다.
  3. 두 번째 함수 내부에서 세 번째 함수를 반환하고, 세 번째 함수는 추가적인 인자를 받습니다.
  4. 필요한 만큼의 함수를 선언하고, 마지막 함수에서는 모든 인자를 가지고 실제 로직을 수행합니다.

다음은 Currying을 사용하여 인자를 동적으로 선택하는 예제 코드입니다. 여기서는 간단한 합계를 구하는 함수를 Currying을 이용해 재사용 가능하게 만들어보겠습니다.

function sum(a) {
  return function(b) {
    if (b) {
      return sum(a + b);
    } else {
      return a;
    }
  }
}

console.log(sum(1)(2)(3)(4)()); // 10
console.log(sum(5)(10)()); // 15

위 코드에서 첫 번째 함수 sum은 인자 a를 받고, 두 번째 함수를 반환합니다. 이때 두 번째 함수는 추가적인 인자 b를 받습니다. 두 번째 함수 내부에서 b가 주어진 경우에는 다시 sum 함수를 호출하면서 a + b 값을 넘겨줍니다. 두 번째 함수의 인자로 아무것도 주어지지 않은 경우에는 a를 반환하여 계산을 종료합니다.

위 예제를 실행하면 sum(1)(2)(3)(4)()와 같은 형태로 함수를 호출하여 결과 값을 얻을 수 있습니다. 체이닝을 통해 인자를 동적으로 선택할 수 있는 장점을 가지고 있으며, 필요에 따라 인자를 유동적으로 조작할 수 있습니다.

이런 식으로 Currying을 사용하여 함수의 인자를 동적으로 선택하면, 유연한 코드 작성과 재사용성의 향상을 기대할 수 있습니다.

#javascript #Currying