14.1 변수의 생명 주기

14.1.1 지역 변수의 생명 주기

변수는 자신이 선언된 위치에서 생성되고 소멸한다. 전역 변수의 생명 주기는 애플리케이션의 생명 주기와 같다. 하지만 함수 내부에서 선언된 지역 변수는 함수가 호출되면 생성되고 함수가 종료하면 소멸한다.

function foo(){ 
	// 변수 x 생성됨
	var x = 'local'; //변수 x에 값 할당됨 (지역 변수)
	console.log(x); //출력 : local
	return x; //함수 종료
	// 변수 x 소멸됨
}

foo(); //함수 호출되어 지역변수 생성됨
console.log(x); //ReferenceError: x is not defined / 소멸됨

순서

foo 함수 호출

→ x 변수의 선언문이 가장 먼저 실행되어 x 변수가 선언되고 undefined로 초기화된 후

→ 함수 몸체를 구성하는 문들이 순차적으로 실행되기 시작하고 변수 할당문이 실행되면 x 변수에 값이 할당된다. → 함수가 종료되면 x 변수도 소멸되어 생명 주기가 종료된다.

함수 내부에서 선언된 지역 변수 x는 foo 함수가 호출되어 실행되는 동안에만 유효하다.

즉, 지역 변수의 생명주기는 함수의 생명 주기와 일치한다.

변수 : 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 메모리 공간을 식별하기 위해 붙인 이름

<aside> ❓

가용 메모리 풀 : 미리 만들어둔 “쓸 수 있는 메모리 공간”의 목록. 빠르고 재사용이 가능함

</aside>

// 전역 변수 x 생성
var x = 'global'; //전역 변수 x에 값 할당

function foo(){
// 지역 변수 x 생성
	console.log(x); // 지역 변수 x에 값 할당/ ***1***
	var x = 'local';
	// 지역 변수 x 소멸
}

foo(); //함수 선언
console.log(x); //global