environmentRecord에는 현재 실행될 컨텍스트의 대상 코드내에 어떤 식별자들이 있는지에만 관심 있고 각 식별자에 어떤값이 할당될 것인지는 관심이 없다. 식별자 a의 인자에 3을 넣든 5를 넣든 결과는 똑같다.
function a() {
var x;
var x;
var x;
x = 1;
console.log(x);
console.log(x);
x = 2;
console.log(x);
}
a(3);
// 답은 1,1,2가 나온다
변수는 선언부만 끌어올린다(호이스팅) 여기서는 변수 b가 밑에서 함수 선언을 한 b를 끌어올린다.
function a() {
console.log(b);
var b = 'bbb';
console.log(b);
function b() {}
console.log(b);
}
a();
// 결과는 b함수, 'bbb', 'bbb'가 나온다. 이때 b함수는 선언과 동시에 변수에b 의해 호이스팅을 당해 끌어올려진다.