JavaScript/모던 자바스크립트 딥다이브

[JS] 전역 변수의 문제점

김춘삼씨의 고양이 2024. 4. 7. 21:45

📌 변수의 생명주기

- 지역변수의 생명주기는 함수의 생명주기와 일치함

- 전역변수의 생명주기는 전역 객체의 생명주기와 일치함

- 변수 호이스팅은 스코프 단위로 동작하기 때문에 var 키워드의 경우 지역변수는 함수 전체에서, 전역변수는 전역 전체에서 유효함

 

📌 전역변수의 문제점

- 암묵적 결함: 모든 코드가 전역변수를 참조하고 변경할 있어 의도치 않게 변수의 상태가 변경될 있음

- 생명주기: 전역변수는 생명주기가 길기 때문에 변수 이름이 중복될 가능성이 있음

- 스코프 체인 상에서 종점에 존재: 전역 변수의 검색 속도가 가장 느려 속도의 차이가 발생함

- 네임스페이스 오염: 다른 파일일지라도 하나의 전역 스코프를 공유하기 때문에 동일한 변수명이 존재할 경우 예상치 못함 결과가 발생할 있음

 

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

- 즉시 실행 함수: 모든 코드를 즉시 실행 함수로 감싸면 모든 변수는 즉시 실행 함수의 지역 변수가 되어 변수 스코프가 좁아짐

- 네임스페이스 객체: 전역에 네임스페이스 역할을 담당할 객체를 생성하고 전역변수처럼 사용하고 싶은 변수를 프로퍼티로 추가해 사용할 수 있음

- 모듈 패턴: 관련이 있는 변수와 함수를 모아 즉시 실행 함수로 감싸 하나의 모듈을 만들어 캡슐화를 구현하고 정보은닉을 할 수 있음

- ES6 모듈: ES6 모듈을 사용해 파일 자체의 독자적인 모듈 스코프를 사용할 수 있음

 

 

 

참고문헌 및 출처 : 모던 자바스크립트 Deep Dive (이웅모)