상세 컨텐츠

본문 제목

[JavaScript] 실행 컨텍스트(2)

개발공부/JavaScript

by 임우찬 2019. 9. 11. 10:59

본문

 

4. 스코프 정보 생성

- 현재 컨텍스트의 유효범위를 나타내는 스코프 정보를 생성한다.

- 이 스코프 정보는 현재 실행중인 실행 컨텍스트 안에서 연결 리스트와 유사한 형식으로 만들어진다.

- 현재 컨텍스트에서 특정 변수로 접근해야 할 경우, 이 리스트를 활용한다.

- 이 리스트에서 찾지 못한 변수는, 결국 정의되지 않은 변수에 접근하는 것으로 판단해 에러를 검출한다.

- 이 리스트를 "스코프 체인"이라고 부른다 [[scope]]프로퍼티로 참조된다.

- 여기서 현재 생성된 활성객체가 스코프 체인의 제일 앞에 추가된다.

* 스코프 정보생성을 그림으로 나타낸 것이다.


5. 변수 생성

- 현재 실행 컨텍스트 내부에서 사용되는 지역변수의 생성이 이루어진다.

- 앞서 생성된 활성객체가 변수 객체로 사용된다.

- 활성 객체와 변수 객체는 같은 객체이다.

- 변수 객체 안에서 호출된 함수 인자는 각각의 프로퍼티가 만들어지고 그 값이 할당된다.

(값이 넘겨지지 않았을 경우 undefined가 할당된다.)

- 함수에서 변수나 내부 함수는 단지 메모리에 "생성만"한다.

- '초기화'는 각 변수나 함수에 해당하는 표현식이 실행되기 전까지는 이루어지지 않는다.

- 따라서 변수들에는 undefined가 먼저 할당된다.

- 표현식의 실행은 변수 각체의 생성이 다 이루어진 후 시작된다.


6. this 바인딩

- 마지막 단계로, this키워드를 사용하는 값이 할당된다.

- 여기서 this가 참조하는 객체가 없으면 전역 객체를 참조한다.


7. 전역 실행 컨텍스트

- arguments 객체가 없다.

- 전역 객체가 하나만을 포함하는 스코프 체인이 있다.

- 전역 객체 by ECMAScript: 실행 컨텍스트가 형성되는 세 가지중 하나로서 전역코드가 있는데, 이 전역코드가 실행될 때 생성되는 컨텍스트"전역실행 컨텍스트"다.

- 전역 실행 컨텍스트는 변수를 초기화하고 이것의 내부 함수는 일반적인 탑 레벨의 함수로 선언된다.

- 전역 실행 컨텍스트의 변수 객체가 전역 객체로 사용된다.

- this를 전역 객체의 참조로 사용한다.

* 참고로, Node.js에서는 최상위 코드가 전역코드가 아니다.

ex)

var a = 10; -> 전역코드x

b = 15; -> 전역코드O

관련글 더보기

댓글 영역