Search

전역 변수의 문제점

14.1 변수의 생명 주기

14.1.1 지역 변수의 생명 주기

함수의 생명주기는 지역 변수 생명주기와 같습니다. 또한 호이스팅의 경우 스코프 단위로 동작하는데 전역변수가 있더라도 지역변수가 있다면 실행전 undefined로 초기화됩니다.
var x = 'global'; function foo(){ console.log(x); // undefined var x = 'local'; } foo(); console.log(x); // global
JavaScript
복사

14.1.2 전역 변수의 생명 주기

var로 선언한 전역 변수의 생명주기는 전역 객체(window 등)의 생명주기와 같다.

14.2 전역 변수의 문제점

모든 코드가 참조 가능해지는 암묵적 결합
긴 생명주기
스코프 체인상 끝에 있어 느린 속도
네임스페이스의 오염

14.3 전역 변수의 사용을 억제하는 방법

14.3.1 즉시 실행 함수

즉시 실행 함수로 감싸면 모든 변수는 지역변수가되어 스코프가 제한된다.

14.3.2 네임스페이스 객체

네임스페이스 객체로 감싸서 필요한 변수들을 안에 추가할 수 있다. 만 좋은 방법으로 추천되지는 않는다.

14.3.3 모듈 패턴

클로저 기능을 통해 변수를 캡슐화 시킨 상태에서 함수형을 클래스처럼 사용 가능하다.
var Counter = (function(){ var name = 0; // private return { increase() { // public return num++; } } })();
JavaScript
복사

14.3.4 ES6 모듈

type=”module” 를 통해서 불러오는 슼립트를 모듈처럼 사용할 수 있다.