[javascript] 자바스크립트의 클로저(Closure) 개념과 활용 방법

자바스크립트에서 클로저는 매우 강력하고 유용한 개념입니다. 클로저를 제대로 이해하고 활용한다면 변수의 유효 범위(scoping)와 메모리 관리에 대한 이해가 높아지고, 함수형 프로그래밍에서의 기술적인 장점을 활용할 수 있습니다.

클로저란 무엇인가요?

클로저는 다른 함수의 내부 함수이며, 외부 함수의 변수에 접근할 수 있는 함수입니다. 이는 외부 함수가 실행을 마쳤더라도 외부 함수의 변수에 접근할 수 있다는 의미입니다.

예를 들어, 다음과 같은 코드에서 내부 함수 innerFunc 은 외부 함수 outerFunc 의 변수 x에 접근할 수 있습니다.

function outerFunc() {
  let x = 10;

  function innerFunc() {
    console.log(x);
  }

  return innerFunc;
}

const newFunc = outerFunc();
newFunc(); // 10

클로저의 활용

클로저는 주로 콜백 함수, 비동기 처리, 정보 은폐 등 다양한 상황에서 활용됩니다.

예를 들어, 다음은 클로저를 사용하여 간단한 카운터를 구현한 예제입니다.

function createCounter() {
  let count = 0;

  function increment() {
    count++;
    console.log(count);
  }

  return increment;
}

const counter1 = createCounter();
counter1(); // 1
counter1(); // 2

const counter2 = createCounter();
counter2(); // 1

위의 예제에서 createCounter 함수는 클로저를 반환하고, 이 클로저를 실행함으로써 count 변수가 유지되면서 카운터가 증가합니다.

마무리

클로저는 자바스크립트에서 매우 강력한 기능으로, 함수형 프로그래밍과 비동기 처리 등 다양한 분야에서 활용됩니다. 클로저의 개념을 확실하게 이해하고, 적절히 활용하는 것은 개발자로서 중요한 기술 중 하나입니다. 코드를 작성할 때 클로저를 적극적으로 활용해보고, 그 효과에 대해 경험해 보시기를 권장드립니다.

참고 자료: