• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

17분 부분부터?

21.08.31 21:48 작성 조회수 135

3

마지막에 설명해주시는 부분에 

잘 모르겟어서 그런데요

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 개념 잘 잡고 갑니다