Post

Deep Dive 14. 전역 변수의 문제점

전역 변수의 생명주기

Desktop

var 키워드로 선언한 전역 변수의 생명 주기는 전역 객체의 생명 주기와 일치한다.

클라이언트 사이드 환경(브라우저)에서는 window, 서버 사이드 환경(Node.js)에서는 global 가 전역객체이다.

전역 변수는 암묵적 결합을 유발하고, 검색 속도가 가장 느리고, 네임스페이스를 오염 시킬 수 있기 때문에 사용을 지양해야 한다.

모듈 패턴

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var Counter = (function (){
  // private 변수
  var num = 0;

  // 외부로 공개할 데이터나 메서드를 프로퍼티로 추가한 객체를 반환한다.
  return {
    increase(){
      return ++num;
    },
    decrease(){
      return --num;
    }
  };
}());

// private 변수는 외부로 노출되지 않는다.
console.log(Counter.num); // undefined

console.log(Counter.increase()); // 1
console.log(Counter.decrease()); // 0

모듈 패턴은 클래스를 모방하여 관련이 있는 변수와 함수를 모아 즉시 실행 함수로 감싸 하나의 모듈을 만든다. 모듈 패턴을 사용하면 전역 변수의 억제는 물론 캡슐화까지 구현 할 수 있다. 반환되는 객체의 프로퍼티는 외부에 노출되는 public member이고 그렇지 않은 객체는 외부에서 접근할 수 없는 private member가 된다.

This post is licensed under CC BY 4.0 by the author.