자바스크립트에서 Currying을 사용하여 함수의 결과를 어떻게 체이닝할 수 있나요?

Currying은 함수를 여러 개의 인자 대신에 하나의 인자만 받는 여러 개의 중첩 함수로 바꾸는 프로그래밍 기법입니다. 이를 사용하면 함수를 체이닝하여 여러 단계에서 작업을 수행할 수 있습니다.

// Currying을 사용하여 함수 체이닝하기
function add(x) {
  return function(y) {
    return x + y;
  };
}

const addFive = add(5);
const result = addFive(3);
console.log(result); // 8

위의 예제에서 add 함수는 x라는 매개변수를 받는 함수를 반환합니다. 반환된 함수는 y라는 매개변수를 받아 x + y의 결과를 반환합니다. 따라서 addFivex에 5를 전달한 새로운 함수이며, 이 함수는 y에 3을 전달받아 8을 반환합니다.

// 함수 체이닝 예제
function multiply(x) {
  return function(y) {
    return x * y;
  };
}

const multiplyTwo = multiply(2);
const multiplyThree = multiply(3);

const result1 = multiplyTwo(4);
const result2 = multiplyThree(4);

console.log(result1); // 8
console.log(result2); // 12

위의 예제에서는 multiply 함수를 정의하고 multiplyTwomultiplyThree라는 두 개의 Currying된 함수를 만들었습니다. 이 두 함수는 각각 x에 2와 3을 전달받아 곱셈 연산을 수행합니다. 따라서 result1은 2 * 4인 8을 반환하고 result2는 3 * 4인 12를 반환합니다.

Currying을 사용하면 함수 체이닝을 통해 여러 가지 작업을 연속적으로 수행할 수 있으며, 코드의 가독성과 재사용성을 향상시킬 수 있습니다.

#javascript #currying