inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바스크립트 중고급: 엔진 핵심

3. 실행 콘텍스트 실행 과정, [정리 시간]

실행 콘텍스트 실행과정 정리

276

simoniful

작성한 질문수 10

3

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 합니다. 

제대로 이해한게 맞는가요?..

실행콘텍스트 javascript

답변 2

2

김영보

예, 좋습니다. 깨끗합니다.
정리하는 차원에서 조금 더 복잡한 시나리오를 작성하고, 코드를 작성한 후, 위에 작성한 대로 프로그램이 흘러가는지  검증해보세요. 엔진 내부 처리이지만 내가 엔진이라고 생각하고 정리하면, 완전하게 내 것이 될 것입니다.

0

simoniful

감사합니다! 더 복잡한 것도 실행 콘텍스트의 맥락을 이해하도록 노력해야겠어요

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