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