해결된 질문
작성
·
129
1
function book(){
function get() {
return point;
};
var point = 123;
return get();
};
console.log(book());
1. function 키워드를 만나 function 오브젝트를 생성하고 [[Scope]] 를 글로벌 스코프로 설정한다.
2. book() 함수가 호출되어 book() 함수 안으로 들어간다.
3. 실행 컨텍스트를 생성한다.
- 위에서 글로벌 스코프로 설정 해둔 [[Scope]]를 외부 렉시컬 환경 참조에 설정한다.
- 환경 레코드에 {get : function 오브젝트}, {point:undefined} 로 설정한다.
4. function 키워드에 의해 get function 오브젝트가 생성되고 [[Scope]]에 book 스코프를 설정한다.
5. point 변수에 123 값이 할당 된다.
5. get() 함수가 호출되어 get()으로 들어간다.
- 새로운 실행 컨텍스트가 생성된다.
- 새로운 실행 컨텍스트의 환경 레코드에서 먼저 찾고 없으면 외부 렉시컬 환경 참조에서 point를 찾는다.
- 외부 렉시컬 환경 참조에서 point로 값을 찾고 이것을 리턴한다.
저는 이렇게 이해했는데 제가 이해한게 맞을까요?