- 즉시 실행 함수
- 즉시 실행 함수를 사용하면 지역 변수가 된다.
(function () {
var foo = 10;
// ...
}());
console.log(foo);
- 네임스페이스 객체
- 네임스페이스 역할 담당할 객체 생성하고 전역 변수처럼 사용하고 싶은 변수를 프로퍼티로 추가하는 방법
- 근데 굳이 이렇게 써야할까...? 란 생각이 드는군..
// 전역 네임스페이스 객체
var MYAPP = {};
MYAPP.name = 'Lee';
console.log(MYAPP.name); // Lee
// 계층적 구성
var MYAPP = {};
NYAPP.person = {
name: 'Lee',
address: 'Seoul',
};
console.log(MYAPP.person.name); // Lee
- 모듈 패턴
- 클래스를 모방해서 관련이 있는 변수, 함수를 모아 즉시 실행 함수로 감싸 하나의 모듈을 만든다.
- 클로저를 기반으로 동작
- 이것도 마찬가지로 이렇게 까지 써야할까 란 생각이 드는데... 잘 모르겠다.
var Counter = (function() {
// private 변수
var num = 0;
// 외부로 공개할 데이터나 메서드를 프로퍼티로 추가한 객체를 반환한다.
return {
increase() {
return ++num;
},
decrease() {
return --num;
}
};
}());
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
- ES6 모듈
- ES6 모듈은 파일 자체의 독자적인 모듈 스코프를 제공한다.
// type="module" 추가, 확장자는 mjs 권장
<script type="moudle" src="lib.mjs"></script>
<script type="moudle" src="app.mjs"></script>