즉시 실행 함수
(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변수는 외부로 노출되지 않는다.
console.log(Counter.num);
console.log(Counter.increase()); //1
console.log(Counter.decrease()); //0
ES6 모듈
<script type="module" src="lib.mjs"></script>
<script type="module" src="app.mjs"></script>