JavaScript/모던 자바스크립트 딥다이브
[JS] 전역 변수의 문제점
김춘삼씨의 고양이
2024. 4. 7. 21:45
📌 변수의 생명주기
- 지역변수의 생명주기는 함수의 생명주기와 일치함
- 전역변수의 생명주기는 전역 객체의 생명주기와 일치함
- 변수 호이스팅은 스코프 단위로 동작하기 때문에 var 키워드의 경우 지역변수는 함수 전체에서, 전역변수는 전역 전체에서 유효함
📌 전역변수의 문제점
- 암묵적 결함: 모든 코드가 전역변수를 참조하고 변경할 수 있어 의도치 않게 변수의 상태가 변경될 수 있음
- 긴 생명주기: 전역변수는 생명주기가 길기 때문에 변수 이름이 중복될 가능성이 있음
- 스코프 체인 상에서 종점에 존재: 전역 변수의 검색 속도가 가장 느려 속도의 차이가 발생함
- 네임스페이스 오염: 다른 파일일지라도 하나의 전역 스코프를 공유하기 때문에 동일한 변수명이 존재할 경우 예상치 못함 결과가 발생할 수 있음
📌 전역 변수의 사용을 억제하는 방법
- 즉시 실행 함수: 모든 코드를 즉시 실행 함수로 감싸면 모든 변수는 즉시 실행 함수의 지역 변수가 되어 변수 스코프가 좁아짐
- 네임스페이스 객체: 전역에 네임스페이스 역할을 담당할 객체를 생성하고 전역변수처럼 사용하고 싶은 변수를 프로퍼티로 추가해 사용할 수 있음
- 모듈 패턴: 관련이 있는 변수와 함수를 모아 즉시 실행 함수로 감싸 하나의 모듈을 만들어 캡슐화를 구현하고 정보은닉을 할 수 있음
- ES6 모듈: ES6 모듈을 사용해 파일 자체의 독자적인 모듈 스코프를 사용할 수 있음
참고문헌 및 출처 : 모던 자바스크립트 Deep Dive (이웅모)