Currying을 사용하여 자바스크립트에서 함수의 유연성을 어떻게 높일 수 있나요?

간단한 예제로 시작해보겠습니다. 다음은 두 개의 숫자를 더하는 add 함수입니다.

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

이 함수를 currying을 이용하여 변환하면 다음과 같습니다.

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

이제 add 함수를 호출할 때 한 번에 두 개의 값을 넘기는 대신, 첫 번째 매개변수를 받고 두 번째 매개변수를 받는 새로운 함수를 순차적으로 호출할 수 있습니다. 예를 들어,

add(2)(3); // 5

Currying을 사용하면 매개변수 일부가 이미 결정된 새로운 함수를 생성할 수 있습니다. 이는 특히 다른 함수에 인자를 전달하거나 함수를 조합하는 경우에 유용합니다. 예를 들어,

const addTwo = add(2);
console.log(addTwo(3)); // 5
console.log(addTwo(5)); // 7

이렇게 하면 add 함수에 첫 번째 매개변수가 항상 2로 설정된 상태로 새로운 함수를 생성할 수 있습니다.

Currying의 이점 중 하나는 재사용 가능한 함수를 만들 수 있다는 것입니다. 예를 들어, 두 개의 숫자를 곱하는 multiply 함수를 currying으로 작성하면 다음과 같습니다.

function multiply(a) {
  return function(b) {
    return a * b;
  }
}

이 함수를 사용하여 새로운 함수를 생성하고 재사용할 수 있습니다.

const multiplyByTwo = multiply(2);
console.log(multiplyByTwo(3)); // 6
console.log(multiplyByTwo(5)); // 10

이처럼 currying은 함수의 유연성을 향상시키고 재사용 가능한 코드를 작성하는 데 도움을 줍니다. 따라서 currying을 사용하여 자바스크립트 함수를 변환하면 코드의 가독성과 유지 보수성을 높일 수 있습니다.

#javascript #currying