인프런 커뮤니티 질문&답변

seonjun Moon님의 프로필 이미지
seonjun Moon

작성한 질문수

코어 자바스크립트

실행 컨텍스트 (execution context)

17분 부분부터?

작성

·

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가 할당됩니다.

seonjun Moon님의 프로필 이미지
seonjun Moon
질문자

감사합니다 덕분에 javascript 개념 잘 잡고 갑니다 

seonjun Moon님의 프로필 이미지
seonjun Moon

작성한 질문수

질문하기