[javascript] 클로저를 활용한 반복 처리

자바스크립트에서 클로저를 활용하면 반복적인 작업을 효율적으로 처리할 수 있습니다. 클로저는 함수가 선언될 당시의 환경을 기억하고 있다가 후에 호출될 때 그 환경을 계속 이용할 수 있는 특징을 가지고 있습니다. 이번 포스트에서는 클로저를 활용하여 반복적으로 값을 증가시키는 예제를 살펴보겠습니다.

클로저란 무엇인가?

클로저는 함수와 그 함수가 선언된 렉시컬 환경(Lexical Environment)의 조합입니다. 이 렉시컬 환경은 함수가 정의될 때의 환경을 기억하고 있는데, 이를 통해 함수가 외부 변수에 접근할 수 있게 됩니다.

function outerFunction() {
  let outerVariable = 10;
  
  function innerFunction() {
    console.log(outerVariable);
  }
  
  return innerFunction;
}

let closureFunc = outerFunction();

위의 예제에서 innerFunctionouterFunction이 실행되는 동안 생성된 렉시컬 환경을 기억하게 됩니다. 따라서 closureFunc를 호출할 때마다 outerVariable의 값에 접근하여 출력할 수 있습니다.

반복 처리 예제

이제 클로저를 활용하여 반복적으로 값을 증가시키는 예제를 살펴보겠습니다.

function createIncrementor(initialValue, increment) {
  let value = initialValue;
  
  function incrementor() {
    value += increment;
    console.log(value);
  }
  
  return incrementor;
}

let incrementByTwo = createIncrementor(0, 2);
incrementByTwo(); // 2
incrementByTwo(); // 4
incrementByTwo(); // 6

위의 예제에서 createIncrementor 함수는 새로운 값을 생성하기 위한 클로저를 반환합니다. 반환된 클로저를 통해 value를 증가시키면서 값을 출력할 수 있습니다.

결론

클로저는 효율적인 반복 처리를 위해 매우 유용하게 활용될 수 있습니다. 함수를 통해 외부 환경의 변수를 기