변수의 생명주기
지역변수의 생명주기
- 함수 생명 주기
- 생명주기: 참조하고 있는지 아닌지의 여부에 따라 결정된다
- 필요성
- 생명주기가 없다면 한번 선언된 변수는 종료 이전까지 영원히 메모리 공간을 점유
전역변수의 생명주기
- 전역객체의 생명주기와 같다
- 전역객체: 코드 실행 전에 자바스크립트 엔진에 의해 가장 먼저 생성되는 객체(window)
전역변수의 문제점
암묵적 결합
- 모든 코드가 전역변수를 참조하고 변경 허용
- 가독성이 나빠짐
- 의도치 않게 상태 변경
긴 생명주기
스코프체인 상에서 종점에 존재
네임 스페이스 오염
- 파일이 분리되어 있다 해도 하나의 전역 스코프를 공유
- 이름이 같아 예상치 못 한 결과를 초래한다
전역 변수의 사용을 억제하는 방법
즉시 실행 함수
- 함수 정의와 동시에 호출되며 단 한번만 호출
- 모든 코드를 즉시 실행 함수로 감싸면 모든 변수는 실행 함수의 지역변수
(function(){
let a=3;
}());
네임 스페이스 객체
- 전역변수처럼 사용하고 싶은 변수를 프로퍼티로 추가
- 객체를 프로퍼티로 추가해서 계층적으로 구성할 수 있다
- 네임 스페이스 객체 자체가 전역변수에 할당되므로 유용하지 않다
let name ={};
name.person ={name:'lee'};
모듈패턴
- 클래스를 모방해서 관련있는 변수와 함수를 모아 즉시 실행 함수로 감싸 하나의 모듈형성