변수의 생명 주기
지역 변수의 생명 주기 : 함수의 생명 주기와 일치
- 변수의 생명 주기 : 메모리 공간이 확보된 시점부터 메모리 공간이 해제되어 가용 메모리 풀에 반화되는 시점까지
전역 변수의 생명 주기 : var 키워드로 선언한 전역 변수의 생명 주기는 전역 객체의 생명 주기와 일치
전역 변수의 문제점
- 암묵적 결합 : 모든 코드가 전역 변수를 참조하고 변경할 수 있는 것
- 긴 생명 주기 : 전역 변수는 생명 주기가 길다.
- 스코프 체인 상에서 종점에 존재 : 전역 변수의 검색 속도가 가장 느림
- 네임스페이스 오염
전역 변수의 사용을 억제하는 방법
전역 변수를 반드시 사용해야 할 이유를 찾지 못 한다면 지역 변수를 사용해야 하며 변수는 스코프는 좁을 수록 좁다.
- 즉시 실행 함수 : 모든 코드를 즉시 실행 함수로 감싸면 모든 변수는 즉시 실행 함수의 지역 변수가 됨
- 네임스페이스 객체 : 전역에 네임스페이스 역할을 담당할 객체를 생성하고 전역 변ㅅ처럼 사용하고 싶은 변수를 프로퍼티로 추가
- 모듈 패턴 : 클래스를 모방해서 관련이 있는 변수와 함수를 모아 즉시 실행 함수로 감싸 하나의 모듈을 만듬. 클로저 기반으로 동작하며, 캡슐화까지 구현 가능
- ES6 모듈 : ES6 모듈은 파일 자체의 독자적인 모듈 스코프츨 제공