전역 변수란 무엇인가?
전역 변수(global variable)는 전역 범위(scope)를 가지는 변수로, JavaScript 코드의 어느 위치에서든 정의하고 접근할 수 있습니다. 편리해 보이지만, 전역 변수가 많아지면 이름 충돌, 의도치 않은 값 변경, 디버깅의 어려움 등 다양한 문제가 발생할 수 있으므로 사용을 최소화하는 것이 좋습니다.
네임스페이스 객체로 전역 변수 정리하기
전역 변수 사용을 줄이는 대표적인 방법은 단 하나의 전역 네임스페이스 객체를 만들고, 프로젝트의 여러 부분에서 필요로 하는 변수와 함수를 그 안에 일관되게 정의하는 것입니다. 아래 예제처럼 myValue라는 단일 객체 안에 모든 속성과 메서드를 그룹화하면 전역 스코프 오염을 크게 줄일 수 있습니다.
var myValue = {
common: function(){
// 공통으로 사용되는 코드
},
val1: {
myVar1: "Demo String One",
func1: function(){
// 첫 번째 기능 코드
}
},
val2: {
myVar1: "Demo String Two",
func1: function(){
// 두 번째 기능 코드
}
},
val3: {
myVar1: "Demo String Three",
func1: function(){
// 세 번째 기능 코드
}
}
};전역 변수를 최소화해야 하는 이유
- 이름 충돌 방지: 여러 스크립트나 라이브러리가 같은 이름의 전역 변수를 사용하면 서로 덮어쓰면서 오류가 발생할 수 있습니다.
- 유지보수성 향상: 변수가 특정 모듈이나 객체 안에 캡슐화되면 코드의 출처와 용도를 파악하기 쉬워집니다.
- 예측 가능한 동작: 전역 상태가 줄어들면 함수 간의 의존성이 명확해져 버그를 추적하기가 훨씬 수월합니다.
추가로 활용할 수 있는 기법
네임스페이스 객체 외에도 IIFE(즉시 실행 함수)를 사용해 지역 스코프를 만들거나, ES6의 let, const와 모듈 시스템(import/export)을 활용하면 전역 변수 노출을 더욱 효과적으로 제한할 수 있습니다. 프로젝트 규모에 맞게 이러한 기법들을 조합해 사용하는 것이 좋습니다.