Inflearn Community Q&A
정리 시간
Resolved
Written on
·
169
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로 값을 찾고 이것을 리턴한다.
저는 이렇게 이해했는데 제가 이해한게 맞을까요?
javascript
Answer 2
1
0
tonextday
Instructor
예, 맞습니다. 1번, 설정이 반대입니다. [[scope]]에. 2번, 호출되면 먼저 만들고 들어갑니다. 3번 글로벌 스코프를. 4번, book 스코프가 아니라 get의 스코프입니다.





