[javascript] 클로저를 사용한 모듈 패턴

자바스크립트에서 모듈은 전역 스코프를 오염시키지 않고 변수와 함수를 캡슐화하여 재사용 가능한 코드를 만들 수 있도록 돕는다. 모듈 패턴은 클로저를 활용하여 이러한 캡슐화를 구현하는 데 유용하다.

클로저란?

클로저는 함수와 함수가 선언된 렉시컬 환경(Lexical Environment)의 조합이다. 함수가 정의될 때의 스코프에서 식별자를 기억하고, 함수가 호출될 때 이를 바탕으로 동작한다. 이를 통해 함수는 자신이 선언된 스코프 외부에 있는 변수와 함수에 접근할 수 있게 된다.

클로저를 활용한 모듈 패턴

아래는 클로저를 사용하여 모듈 패턴을 구현한 간단한 예제이다.

// 모듈 생성
var myModule = (function() {
  var privateVariable = 'I am private';

  function privateMethod() {
    console.log('This is a private method');
  }

  return {
    publicMethod: function() {
      console.log('This is a public method');
      privateMethod();
    },
    publicVariable: 'I am public'
  };
})();

// 모듈 사용
myModule.publicMethod();  // 출력: This is a public method  This is a private method
console.log(myModule.publicVariable);  // 출력: I am public
console.log(myModule.privateVariable);  // 출력: undefined (접근 불가)
myModule.privateMethod();  // 에러 발생 (접근 불가)

위 예제에서 myModule은 클로저 안에서 정의된 함수로, 외부에서 접근할 수 있는 공개(public) 메서드와 변수만을 노출하고 있다.

클로저를 통해 privateVariableprivateMethod를 은닉하고, publicMethodpublicVariable을 통해 외부로 노출함으로써 모듈화된 코드를 구현할 수 있다.

결론

클로저를 활용한 모듈 패턴은 전역 스코프를 오염시키지 않고 코드를 캡슐화하여 모듈화할 수 있는 강력한 방법이다. 이 패턴을 사용하면 코드의 유지보수성을 높이고 재사용성을 높일 수 있다.

참고 자료:


위 내용은 클로저를 사용한 모듈 패턴의 이해를 돕기위한 것이며, 실제 구현에 따라 상이할 수 있습니다.