전역 변수의 무분별한 사용은 위험하다.
전역 변수를 반드시 사용해야할 이유가 없다면 지역 변수를 사용해야한다.
var
로 선언한 전역 변수 => 전역 객체의 생명 주기와 일치전역 객체
런타임 이전 단계에 자바스크립트 엔진에 의해 어떤 객체보다도 먼저 생성되는 특수한 객체
- 클라이언트 사이드 환경 (브라우저) -
window
- 서버 사이드 환경 (Node.js) -
global
(function() {
var foo = 10; // 즉시 실행 함수의 지역 변수가 됨
...
}());
console.log(foo); // ReferenceError: foo is not defined
var MYAPP = {}; // 전역 네임스페이스 객체
MYAPP.name = 'Lee'; // 객체의 프로퍼티로 추가
console.log(MYAPP.name); // Lee
var Counter = (function() {
// private 변수
var num = 0;
// 외부에 공개할 변수나 함수를 담아 반환
return {
increase() {
return ++num;
},
decrease() {
return --num;
}
};
}());
// private 변수는 외부로 노출 X
console.log(Counter.num); // undefined
console.log(Counter.increase()); // 1
console.log(Counter.increase()); // 2
console.log(Counter.decrease()); // 1
console.log(Counter.decrease()); // 0
<script type="module" src="lib.mjs"></script>
<script type="module" src="app.mjs"></script>