전역 변수의 무분별한 사용은 위험한 결과를 초래할 수 있습니다. 전역 변수를 반드시 사용해야 하는 경우가 아니라면 사용을 자제해야 하며, 지역 변수를 사용해야 합니다. 지금부터 전역 변수의 사용을 줄일 수 있는 방법에 대해 알아보겠습니다.
즉시 실행 함수
함수 정의와 동시에 호출되는 즉시 실행 함수는 단 한 번만 호출되며, 모든 코드를 즉시 실행 함수로 감싸면 모든 변수는 즉시 실행 함수의 지역 변수가 됩니다.
(function (){
var foo = 10;
}());네임스페이스 객체
전역 코드에 네임스페이스 객체를 생성하고 전역 변수처럼 사용코자 하는 변수를 프로퍼티로 추가하는 방법입니다. 하지만, 식별자 충돌 방지 효과는 있으나 네임스페이스 객체 자체가 전역 변수에 해당되어 좋은 방법은 아닙니다.
모듈 패턴
관련 있는 변수와 함수를 모아 즉시 실행 함수로 감싸 하나의 모듈을 만드는 방법입니다. 모듈 패턴은 클로저를 기반으로 동작하여 전역 변수 사용 억제뿐만 아니라 캡슐화까지 구현할 수 있습니다.
var Counter = (function (){
var num = 0;
return{
increase(){
return ++num;
},
decrease(){
return --num;
}
};
}());ES6 모듈
ES6 모듈은 파일 자체의 독자적인 모듈 스코프를 제공합니다. 따라서 모듈 내에서 선언된 변수는 전역 변수가 아닙니다. 모던 브라우저에서 모듈을 사용할 수 있습니다.
참고
이웅모, ⌈모던 자바스크립트 - Deep Dive⌋, 2020, 14_전역 변수의 문제점(p.204 - 207)
