14.1 변수의 생명주기
변수의 생명주기
변수는 자신이 선언된 위치에서 생성되고 소멸한다
→ 따라서 전역변수의 생명주기는 애플리케이션의 생명주기(=전역 객체의 생명주기)와 같고, 지역변수의 생명주기는 함수의 생명주기와 같다. (함수가 호출될 때 생성되고 종료될 때 소멸)
→ 따라서 변수는 함수가 호출되기 이전까지는 생성되지 않는다
그림 14-1
호이스팅 : 변수 선언이 스코프의 선두로 끌어올려진것 처럼 동작하는 자바스크립트의 특징, 스코프를 단위로 동작
그림 14-2
14.2 전역변수의 문제점
14.3 전역변수 사용을 억제하는 방법
즉시 실행 함수
네임스페이스 객체
모듈패턴
var Counter1 = (function(){
var num = 10;
return {
increase(){
return ++num;
},
decrease(){
return --num;
}
}
}());
Counter1.num //undefined
Counter1.increase() //11
var Counter2 = (function(){
return {
num: 5,
increase(){
return ++this.num;
},
decease(){
return --this.num;
}
}
}());
Counter2.num //5
Counter2.increase() //6
캡슐화 가능 → 객세의 상태를 나타내는 프로퍼티와 메서드를 묶을 수 있다(=캡슐화)는게 장점(cf. https://debugdaldal.tistory.com/150)
정보은닉 가능→클로저
ES6모듈
<script type="module" src="user.js"></script>
<script type="module" src="hello.js"></script>