[JavaScript] 실행 컨텍스트(2)
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
[JavaScript] 스코프 체인
2019.09.11
[JavaScript] 실행 컨텍스트(1)
[JavaScript] AJAX
[JavaScript]함수와 프로토타입 체이닝(5)
댓글 영역