undefined가 들어갈 만큼의 공간을 확보하고 undefined를 할당
여기서 undefined의 메모리크기는 브라우저마다 다르기에 알 수 없다
메모리 주소와 변수는 1:1 매핑관계
변수는 식별자가 맞지만 식별자는 변수가 아니다
위 문장의 뜻을 식별자의 범위가 더 크다는 것을 의미
JS에서 값을 처음 할당할 때
var a = 30;
위와 같은 구문이 있으면
var a; // 선언문
a = 30; // 할당문
위의 구문을 함축해 놓은 것인데 JS는 런타임 이전에 모든 선언문을 먼저 실행하여 undefined라는 값을 할당해 놓는다.
그 후 할당문을 통해 값을 할당하면 해당 메모리주소의 값을 지우고 다시 쓰는 것이 아닌 새로운 메모리 주소에 할당할 값을 넣고 연결된 메모리주소를 새로 할당된 값의 메모리주소로 연결한다.
그 후 가비지 콜렉터가 변수로 선언되어 있지 않은 메모리는 초기화시킨다.
호이스팅현상도 JS의 특징인데 위와 같은 구문에서 런타임 이전에 모든 선언문을 undefined로 할당한 후 런타임에 들어가기 때문에 호이스팅 현상이 발생하는 것이다.