[javascript] 클로저를 활용한 콜백 함수 처리

자바스크립트에서 클로저를 활용하여 콜백 함수를 처리하는 방법은 매우 유용하며, 다양한 상황에서 유연하고 효과적으로 코드를 작성할 수 있습니다. 클로저를 이용하면 콜백 함수에서 외부 변수에 접근하여 값을 유지하거나 변경할 수 있습니다.

클로저란 무엇인가요?

클로저는 내부 함수가 외부 함수의 변수에 접근할 수 있는 형태를 가리킵니다. 이것은 함수가 외부 스코프의 변수를 “기억”하고 있다는 것을 의미합니다. 이러한 특성을 이용하면 콜백 함수 처리를 더 유연하게 할 수 있습니다.

function outerFunction() {
  let outerVariable = 'I am outer';

  function innerFunction() {
    console.log(outerVariable);
  }

  return innerFunction;
}

const innerFunc = outerFunction();
innerFunc(); // 출력: I am outer

위 예제에서 innerFunctionouterVariable에 접근하는 것을 볼 수 있습니다. 이렇게 outerFunction이 실행된 이후에도 outerVariable에 접근할 수 있는 것이 클로저의 특성입니다.

클로저를 활용한 콜백 함수 처리

클로저를 사용하여 콜백 함수를 처리하는 예시를 살펴보겠습니다. 아래의 코드는 버튼 클릭 이벤트에 클로저를 사용한 콜백 함수를 등록하는 예제입니다.

function handleClick() {
  let count = 0;

  return function () {
    count++;
    console.log(`Button clicked ${count} times`);
  };
}

const clickHandler = handleClick();

document.getElementById('myButton').addEventListener('click', clickHandler);

위 코드에서 handleClick 함수는 클로저를 사용하여 내부 변수 count를 유지합니다. 클릭 이벤트가 발생할 때마다 count가 증가하며, 클로저를 통해 count 변수에 접근하여 값이 유지됩니다.

이렇게 클로저를 활용하면 콜백 함수에서 외부 변수를 유지하거나 변경하는 등 다양한 활용이 가능합니다.

마무리

클로저를 활용하여 콜백 함수를 처리하는 것은 자바스크립트에서 유용한 패턴 중 하나입니다. 클로저를 이용하면 콜백 함수가 외부 변수에 접근하여 값을 유지하거나 변경할 수 있어, 코드를 더 효율적으로 작성할 수 있습니다. 이러한 패턴은 비동기적인 작업이 필요한 상황에서 더욱 유용하며, 자바스크립트에서 함수형 프로그래밍을 구사하는데 중요한 요소 중 하나입니다.

참고문헌: MDN Web Docs - Closures