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

foo();
console.log(x); //ReferenceError

지역 변수 x는 foo함수가 생성되기 전에는 생성되지 않는다.

변수 선언은 선언문이 어디에 있든 소스코드 평가과정에서 (런타임 이전)에 실행된다.

이 설명은 전역 변수에만 해당한다.

위의 foo 함수 호출 시, 함수 몸체 다른 문들보다 변수, 식별자 선언문이 자바스크립트 엔진에 의해

실행되어 변수 x가 undefined로 초기화된다.

그 후, 런타임에 소스코드가 한줄씩 실행되고 변수 할당문에서 x에 ‘local’이 대입된다.

그리고 함수 종료 시 , 변수 x도 소멸되어 생명이 끝난다.

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

변수는 하나의 값을 저장하기 위한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위한 이름이다.

함수 내부에서 선언된 지역 변수는 자신이 등록된 스코프가 소멸될떄까지 유효하다.

(지역변수 x의 경우 foo함수의 스코프)