Deep Dive 14. 전역 변수의 문제점
전역 변수의 생명주기
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.