<aside> 💡 전역 변수를 반드시 사용할 이유가 없다면, 지역 변수를 사용해야 한다.

</aside>

14.1 변수의 생명 주기

변수는 선언된 위치에서 생성되고 소멸한다.

function foo() {
	var x = 'local';
	console.log(x); // local
	return x;
}

foo();
console.log(x); // ReferenceError: x is not defined

함수 안에서도 변수가 먼저 선언되고, undefined로 초기화 됨

이후 함수 몸체를 구성하는 문들이 실행

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

Untitled

함수가 생성한 스코프는 렉시컬 환경이라 부른다.

할당된 메모리 공간은 더 이상 참조되지 않을 때 가비지 콜렉터에 의해 해제된다.

var x = 'global';

function foo() {
	console.log(x); // undefined
	var x = 'local';
}

foo();
console.log(x);

호이스팅은 스코프 단위로 동작한다.

브라우저의 전역 객체는 window다.

전역 객체는 코드가 실행되기 이전 단계에 자바스크립트 엔진에 의해 어떤 객체보다도 먼저 생성된다.

<aside> 💡 var 키워드로 선언한 전역 변수의 생명주기는 전역 객체의 생명주기와 일치한다.

</aside>

14.2 전역 변수의 문제점

  1. 암묵적 결합
  1. 긴 생명 주기