[javascript] 클로저를 사용한 가변 인자 처리

자바스크립트에서는 함수를 선언할 때 명시적으로 매개변수의 개수를 지정하지 않고도 가변 인자(variable arguments)를 처리할 수 있습니다. 이를 효과적으로 처리하려면 클로저(closure)를 활용할 수 있습니다. 클로저를 사용하면 가변 인자를 처리하는 함수를 보다 유연하게 작성할 수 있습니다. 이번 포스트에서는 클로저를 사용하여 가변 인자를 처리하는 방법에 대해 알아보겠습니다.

클로저란?

먼저, 클로저에 대해 간단히 소개하겠습니다. 클로저는 내부 함수가 외부 함수의 맥락(context)에 접근할 수 있는 것을 가리킵니다. 즉, 외부 함수의 변수에 접근할 수 있는 내부 함수를 클로저라고 할 수 있습니다.

가변 인자 처리를 위한 클로저 활용

이제 가변 인자를 처리하기 위해 클로저를 활용하는 방법에 대해 알아봅시다. 아래의 예제 코드를 통해 이를 살펴보겠습니다.

function createAdder(...initialArgs) {
  return function(...remainingArgs) {
    let total = initialArgs.reduce((acc, val) => acc + val, 0);
    total += remainingArgs.reduce((acc, val) => acc + val, 0);
    return total;
  };
}

const adder1 = createAdder(1, 2, 3);
console.log(adder1(4, 5)); // 15

const adder2 = createAdder(10, 20);
console.log(adder2(30, 40, 50)); // 150

위의 코드에서 createAdder 함수는 클로저를 반환하고 있습니다. 반환된 클로저 내부에서는 매개변수들을 모두 합쳐 총합을 계산하고 반환합니다. 이를 통해 함수를 호출할 때 다양한 개수의 인자를 전달할 수 있습니다.

결론

클로저를 사용하면 가변 인자를 처리하는 함수를 보다 유연하고 간결하게 작성할 수 있습니다. 이를 통해 코드의 재사용성과 가독성을 높일 수 있습니다. 클로저를 적절히 활용하여 함수를 작성할 때 가변 인자를 효과적으로 처리해보세요.