변수의 생명 주기
변수는 생성되고 소멸되는 생명 주기(Life Cycle)가 있다. 전역 변수의 생명 주기는 프로그램의 생명 주기와 같으며, 지역 변수의 생명 주기는 그 지역 변수가 선언된 함수가 호출되면 생성되고 함수가 종료되면 소멸한다. 지역 변수의 생명 주기는 함수의 생명 주기와 일치한다.
전역 변수의 문제점
프로그램을 설계할 때 전역 변수를 사용하지 않는 것이 좋다. 그 이유는 다음과 같다.
- 암묵적 결합: 모든 코드가 전역 변수를 참조하고 변경할 수 있는 것을 말한다. 변수의 유효 범위가 클수록 오류의 가능성도 높아진다.
- 긴 생명 주기: 전역 변수는 생명 주기가 길고, 메모리 리소스도 오랫동안 차지하게 된다. 이는 전역 변수의 상태를 변경할 수 있는 시간도 길다는 것을 의미한다. 이로 인해 의도치 않은 변수 재할당이 이뤄질 수도 있다.
- 스코프 체인 상에서 종점에 존재: 전역 스코프는 가장 마지막에 검색된다. 전역 변수 또한 변수 검색 과정 중 가장 마지막에 검색된다는 것을 의미한다. 이는 프로그램 속도에 영향을 미친다.
- 네임스페이스 오염: 자바스크립트는 파일이 분리되어도 하나의 전역 스코프를 공유하기에 다른 파일 내에서 동일한 이름으로 네이밍된 변수나 함수들이 존재할 때 오류가 발생할 가능성이 생긴다.
전역 변수 사용 억제하기
전역 변수의 무분별한 사용은 위험하며, 가능한 지역 변수를 사용해야 하며 변수의 스코프는 좁을수록 좋다. 전역 변수의 사용을 억제하는 방법은 다음과 같다.
- 즉시 실행 함수: 모든 코드를 즉시 실행 함수로 감싸면 모든 변수는 즉시 실행 함수의 지역 변수가 된다.
- 네임스페이스 객체: 전역에 네임스페이스 역할을 할 객체를 생성한 후, 전역 변수와 같이 사용하고 싶은 변수를 프로퍼티로 추가하는 방법이다.
- 모듈 패턴: 클래스를 모방하여 변수와 함수를 모아 즉시 실행 함수로 감싸 하나의 모듈로 만드는 방법,
- ES6 모듈: ES6 모듈은 파일 자체의 독자적인 모듈 스코프를 제공한다. script 태그에 type="module" 어트리뷰트를 추가하면 로드된 자바스크립트 파일은 모듈로서 동작한다.
래퍼런스(Reference)
https://www.yes24.com/Product/Goods/92742567
반응형