[javascript] 클로저를 사용한 비공개 상태 유지

자바스크립트에서 클로저를 활용하면 비공개 상태(private state)를 유지할 수 있습니다. 이는 외부에서 직접 접근할 수 없는 내부 변수와 함수를 가지는 것을 의미합니다. 클로저를 사용하면 객체 지향 프로그래밍 언어에서 제공하는 접근 제어 기능을 모방할 수 있습니다.

클로저란 무엇인가?

클로저는 함수와 그 함수가 선언될 때의 렉시컬 환경(Lexical Environment)의 조합입니다. 이 렉시컬 환경은 함수가 정의될 때 주변 상태를 기억하고 있으며, 이 상태에 접근할 수 있는 함수를 반환하는 것이 클로저입니다.

클로저를 사용하여 변수 은폐하기

function createCounter() {
  let count = 0;

  return {
    increment: function() {
      count++;
    },
    decrement: function() {
      count--;
    },
    getCount: function() {
      return count;
    }
  };
}

let counter = createCounter();
console.log(counter.getCount()); // 0
counter.increment();
counter.increment();
console.log(counter.getCount()); // 2

위 예제에서 createCounter() 함수는 클로저를 이용하여 count 변수를 감추고, increment(), decrement(), getCount() 함수를 통해 내부 상태를 조작합니다.

클로저의 활용

클로저를 활용하면 객체 지향 프로그래밍에서 사용되는 접근 제어 기능을 구현할 수 있으며, 모듈화된 코드를 작성할 수 있습니다. 또한, 커링(Currying), 메모이제이션(Memoization)과 같은 함수형 프로그래밍 기법을 구현하는 데에도 활용됩니다.

자바스크립트에서 클로저를 사용하여 비공개 상태를 유지함으로써, 코드의 유지보수성 및 안정성을 높일 수 있습니다.

참조: MDN Web Docs: Closures

위의 내용은 클로저를 사용하여 자바스크립트에서 비공개 상태를 유지하는 방법에 대한 간략한 소개입니다.