자바스크립트에서 Currying을 통해 함수의 파라미터를 어떻게 관리할 수 있나요?

Currying을 구현하려면 일반 함수를 이용하여 중첩 함수를 생성하고 파라미터를 저장하는 클로저 개념을 사용합니다. 아래는 Currying을 통해 파라미터를 관리하는 예제 코드입니다.

// Currying을 통해 두 개의 숫자를 더하는 함수 구현
function add(x) {
  return function(y) {
    return x + y;
  }
}

// add 함수를 사용하여 숫자 5와 10을 더하는 예제
const add5 = add(5); // add 함수에 첫 번째 파라미터 5를 전달하여 새로운 함수 생성
console.log(add5(10)); // 출력 결과: 15

// Currying을 통해 세 개의 파라미터를 갖는 함수 구현
function multiply(x) {
  return function(y) {
    return function(z) {
      return x * y * z;
    }
  }
}

// multiply 함수를 사용하여 2, 3, 4를 곱하는 예제
const multiply2 = multiply(2);
const multiply6 = multiply2(3);
console.log(multiply6(4)); // 출력 결과: 24

위의 코드에서 add 함수는 첫 번째 파라미터를 받고, 이후에 반환되는 중첩 함수에서 두 번째 파라미터를 받아 덧셈을 수행합니다. multiply 함수는 여러 개의 중첩 함수를 사용하여 세 개의 파라미터를 받아 곱셈을 수행합니다.

Currying을 사용하면 함수를 조합하여 원하는 기능을 구현하거나, 파라미터를 일부 고정시켜 재사용할 수 있는 유연한 코드를 작성할 수 있습니다. 또한, 커링된 함수를 부분 적용(Partial Application)하거나 커링된 함수를 인자로 받는 고차 함수를 작성할 수도 있습니다.

#javascript #currying