14장. 전역 변수의 문제점
변수의 생명 주기
- 메모리 공간이 확보된 시점부터
- 메모리 공간이 해제되고
- 가용 메모리 풀에 반환되는 시점까지다.
지역 변수의 생명 주기
지역 변수의 생명 주기 = 함수의 생명 주기
var x = 'global';
function foo() {
console.log(x);
var x = 'local'; // x를 지역변수로 다시 선언함
}
foo();
console.log(x);
x를 지역변수로 다시 선언한 경우
그냥 x를 호출한 경우
전역 변수의 생명 주기
var로 선언한 전역 변수는 전역 객체의 프로퍼티가 된다.
전역 객체
코드가 실행되기 전에 자바스크립트 엔진에 의해 어떤 객체보다도 먼저 생성되는 특수한 객체다.
클라이언트 사이드 환경 : window
서버 사이드 환경 : global
es11(es2020)에서 globalThis로 통일되었다.
- 단점
- 생명주기가 길다. (=메모리 리소스도 오랜 기간 소비한다.)
- 스코프 체인 상에서 종점에 존재한다. (=전역변수의 검색 속도가 가장 느리다.)
- 네임스페이스 오염 (=다른 파일에서 변수나 함수가 동일한 이름으로 명명되어있으면 예상치 못한 결과를 가져올 수 있다.)