작성
·
184
4
마지막에 설명해주시는 부분에
잘 모르겟어서 그런데요
inner contxt에서 a를 탐색할 때 a가 없으면 outer함수의 outerEnvironmentReference를 참조해서 거기에도 없으면 전역 컨텍스트를 참조해서 a를 어떻게는 찾아야 하는게 아닌가요?
근데 또 출력을 해보면 선생님 말씀대로 undefined가 잘 출력이 되서 ...
outer함수에 처음 접근한 때에도 console.log(a)를 출력 하려는데 없어서 전역 컨텍스트에서 a를 찾아서 출력해 주잖아요?
근데 inner 컨텍스트는 다른건지 모르겟습니다. ㅠㅠ
답변 1
4
outer에서 a를 탐색한 6번줄의 경우,
outer 컨텍스트 내의 environmentRecord에는
'변수 a'에 대한 정보가 없기 때문에
outerEnvironmentReference를 찾아간 반면,
inner에서 a를 탐색한 9번줄의 경우,
그보다 먼저 8번줄에서 '변수 a 선언'을 했으니까
inner 실행컨텍스트의 environmentRecord에
a변수에 대한 정보가 저장된 상태입니다.
그러니까 해당 변수 a의 값을 읽어오는 거죠.
var로 선언한 변수는 초기화(environmentRecord 수집)
시점에 일단 undefined가 할당됩니다.
감사합니다 덕분에 javascript 개념 잘 잡고 갑니다