[javascript] 클로저를 활용한 스코프 분리

자바스크립트에서 함수 안에서 정의된 변수는 외부에서 접근할 수 없는데, 클로저를 활용하면 이를 가능하게 할 수 있습니다. 클로저는 함수와 그 함수가 선언될 때의 lexical scope와의 조합입니다.

클로저란 무엇인가?

클로저는 외부 함수의 변수에 접근할 수 있는 내부 함수를 가리킵니다. 내부 함수는 외부 함수의 변수에 접근할 수 있는데, 이는 외부 함수의 변수가 내부 함수의 스코프 체인에 있는 것과 관련이 있습니다. 만약 내부 함수가 외부 함수의 변수를 참조하는 경우, 이 내부 함수는 클로저로서 동작하게 됩니다.

클로저를 사용하여 스코프 분리하기

아래는 클로저를 사용하여 스코프를 분리하는 간단한 예시 코드입니다.

function createCounter() {
  let count = 0;
  return {
    increment: function() {
      count++;
    },
    getCurrentCount: function() {
      return count;
    }
  };
}

const counter = createCounter();
counter.increment();
console.log(counter.getCurrentCount()); // 1

위의 예시에서 createCounter 함수는 incrementgetCurrentCount 함수를 반환합니다. 이 두 함수는 count 변수에 접근할 수 있습니다. 이러한 구조로 인해 count 변수는 외부에서 직접 접근할 수 없지만, 클로저를 통해 내부 함수들이 count 변수에 접근할 수 있게 됩니다.

클로저를 활용하여 스코프를 분리함으로써 변수의 접근을 제어하고 보호할 수 있습니다.

마치며

클로저를 활용하면 스코프를 분리하여 변수의 접근을 제어할 수 있습니다. 이는 코드의 안정성을 높이고 예상치 못한 에러를 방지하는데 도움을 줄 수 있습니다. 클로저에 대한 이해와 활용은 자바스크립트 개발에서 중요한 부분이므로, 여러 예시를 통해 활용법을 익혀두는 것이 유용할 것입니다.