실행 콘텍스트 실행과정 정리
276
작성한 질문수 10
function book(){
function get() {
return point;
};
var point = 123;
return get();
};
console.log(book());
1. function 키워드를 만나게 되고 book 오브젝트 생성
2. [[scope]]에 글로벌 오브젝트 설정
3. 변수 확인, 해당사항 없음
4. book() 으로 함수를 호출하면 엔진은 실행 콘텍스트를 생성하고, 실행 콘텍스트 안으로 이동합니다.
준비 단계 - 환경조성
5. 컴포넌트(LEC, VEC, TBC)를 생성하여 실행 콘텍스트에 첨부
6. 환경레코드(ER)를 생성하여 LEC에 첨부
- 함수 안의 함수, 변수를 환경레코드에 바인딩
7. 외부 렉시컬 환경 참조(OLER)를 생성하고 렉시컬 환경 컴포넌트 내 첨부
8. 글로벌 오브젝트의 [[scope]] 를 외부 렉시컬 환경 참조에 설정(참조)
실행 콘텍스트(EC): {
렉시컬 환경 컴포넌트(LEC) = {
환경레코드(ER) : {
get : function 오브젝트,
point: undefined;
},
외부 렉시컬 환경 참조(OLER) : {}
},
변수 환경 컴포넌트(VEC) : {},
this 바인딩 컴포넌트(TBC) : {}
}
9. function 키워드를 만나게 되고 get function 오브젝트 생성
10. [[Scope]]에 get 스코프를 설정한다.
11. point 변수에 123 값이 할당 된다.
12. get() 으로 함수를 호출하면 엔진은 실행 콘텍스트를 생성하고, 실행 콘텍스트 안으로 이동합니다.
실행 콘텍스트(EC): {
렉시컬 환경 컴포넌트(LEC) = {
환경레코드(ER) : {},
외부 렉시컬 환경 참조(OLER) : {
point : 123
}
},
변수 환경 컴포넌트(VEC) : {},
this 바인딩 컴포넌트(TBC) : {}
}
13. 환경 레코드에서 먼저 찾고 없으면 외부 렉시컬 환경 참조에서 point를 찾습니다.
실행단계
14. 함수 내 코드 실행하여 point 값을 return 합니다.
제대로 이해한게 맞는가요?..
답변 2
2
예, 좋습니다. 깨끗합니다.
정리하는 차원에서 조금 더 복잡한 시나리오를 작성하고, 코드를 작성한 후, 위에 작성한 대로 프로그램이 흘러가는지 검증해보세요. 엔진 내부 처리이지만 내가 엔진이라고 생각하고 정리하면, 완전하게 내 것이 될 것입니다.
getBook 실습 예제중 질문드립니다!
0
419
1
__proto__ 에 대해 질문드립니다
0
315
1
호이스팅 코딩시간 풀이
0
358
1
[코딩 시간] JS {name: value} 이해
0
340
1
[[Scope]] 와 [[Environment]]는 같은 개념인가요
0
345
0
slice
0
239
0
스코프가 뭔가요?
0
307
0
어려워요
0
255
0
강사님 변수이름에 get을 붙이는 이유를 알고싶습니다.
0
339
1
[정리 시간] 정확하게 이해했는지 확인 부탁드립니다.
0
300
0
스코프 질문
0
253
1
fn 함수와 book.get 함수 차이 질문드립니다...ㅠㅠㅠ
1
542
1
this binding 논리 질문입니다.
0
279
1
파라미터 값을 매핑할 때
0
251
0
ES6부터는 this 바인딩을 환경 레코드에서 참조한다고 들었습니다.
0
209
0
정리시간 입니다.
0
228
0
정리시간입니다.
6
269
0
정리 시간 입니다.
0
202
0
정리시간입니다.
6
227
0
코딩시간 입니다.
1
221
0
선생님 스코프 질문이 있습니다.
1
238
0
[정리시간] 해보았습니다!
0
173
0
선생님 질문있습니다!!
0
157
0
질문드려도 될까요 선생님..
0
214
0





