변수의 생명 주기
지역 변수의 생명 주기
•
지역 변수의 생명주기는 함수의 생명주기와 일치
전역 변수의 생명 주기
•
var 키워드로 선언한 전역 변수의 생명주기는 전역 객체의 생명주기와 일치
◦
클라이언트(브라우저)의 전역객체: window
◦
서버사이드의 전역객체: global
전역 변수의 문제점
•
암묵적 결합
모든 코드가 전역 변수를 참조하고 변경할 수 있는 것
•
긴 생명 주기
메모리 리소스를 오랜 기간 소비하고 변수의 상태를 변경할 수 있는 기간과 기회가 많아짐
•
스코프 체인 상에서 종점에 존재
전역 변수의 검색 속도가 가장 느림
•
네임스페이스 오염
JS는 파일이 분리되었다 하더라도 하나의 전역스코프를 공유하여 동일한 이름의 전역 변수나 함수가 같은 스코프 내에 존재할 시 예상치 못한 결과를 일으킴
전역 변수의 사용을 억제하는 방법
•
가능한 한 지역변수를 사용하여 변수의 스코프를 좁게 만드는 것이 좋다!
즉시 실행 함수
•
모든 코드를 즉시 실행 함수로 감싸 모든 변수는 즉시 실행 함수의 지역변수가 되게 만든다.
•
--> 전역변수를 생성하지 않아서 라이브러리 등에서 자주 사용
네임 스페이스 객체 - 잘 안씀
•
전역에 네임스페이스 객체 생성하여 사용할 변수를 프로퍼티로 추가함
모듈 패턴
•
클로저 기반으로 동작함. -->
var Counter = (function () {
var num = 0;
return {
increase() {
return ++num;
},
decrease() {
return --num;
}
};
}());
JavaScript
복사
•
퍼블릭 멤버(increase, decrease 함수) : 객체의 프로퍼티중 외부에 노출되는 것
•
프라이빗 멤버(num) : 외부에 노출되지 않는 것
ES6 모듈
•
ES6 모듈은 파일 자체의 독자적인 모듈 스코프를 제공