자바스크립트에서 Currying을 사용하여 함수의 인자를 어떻게 정의할 수 있나요?

Currying의 핵심은 함수를 인자 하나씩 받는 중첩된 함수들의 시퀀스로 변환하는 것입니다.

예를 들어, 두 수를 더하는 함수를 Currying을 사용하여 정의해보겠습니다.

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

위의 코드에서, add 함수는 인자 a를 받고, 내부에서 또 다른 함수를 반환합니다. 이 내부 함수는 인자 b를 받고, ab를 더한 값을 반환합니다.

이제 Currying된 함수 add를 사용해보겠습니다.

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

위의 코드에서, add 함수에 인자 2를 전달하여 반환된 함수를 addTwo 상수에 할당합니다. 그리고 이 addTwo 함수에 인자 3을 전달하여 실행하면 2 + 3의 결과인 5가 출력됩니다.

이처럼 Currying을 사용하면 함수를 조합하고 재사용할 수 있으며, 좀 더 유연하고 모듈화된 코드를 작성할 수 있습니다.

#javascript #currying