2021. 8. 5. 17:02ㆍCSE/Java Script
1. 실행 컨텍스트 개념
- 콜 스택(call stack) : 함수를 호출할 때 해당 함수의 호출 정보가 차곡차곡 쌓여있는 스택
- 실행 컨텍스트는 콜 스택에 들어가는 실행 정보 하나와 비슷하다.
- 실행 컨텍스트가 형성되는 세 가지 경우
- 전역 코드
- eval() 함수로 실행되는 코드
- 함수 안의 코드를 실행할 경우
- ECMAScript에서 말하는 실행 컨텍스트 생성
=> 현재 실행되는 컨텍스트에서 이 컨텍스트와 관련 없는 실행 코드가 실행되면, 새로운 컨텍스트가 생성되어 스택에 들어가고 제어권이 그 컨텍스트로 이동한다.
console.log("This is gloabl context");
function ExContent1(){
console.log("This is ExContent1");
};
function ExContent2(){
ExContent1();
console.log("This is ExContent2");
};
ExContent2();
//This is global context
//This is ExContent1
//This is ExContent2
- 전역 컨텍스트 -> ExContext2 호출 -> ExContext1 호출 -> ExContext1 반환 -> ExContext2 반환 -> 전역 컨텍스트 실행 완료
2. 실행 컨텍스트 생성 과정
(1) 활성 객체 생성
- 실행 컨텍스트가 생성되면 자바스크립트 엔진은 해당 컨텍스트에서 실행에 필요한 여러 가지 정보를 담을 객체를 생성한다
=> 활성 객체를 생성하는 것
- 활성 객체에는 앞으로 사용하게 될 매개변수나 변수 및 객체를 저장하게 된다.
(2) arguments 객체 생성
- 함수 입력 인자가 들어있는 arguments 객체를 생성한다.
(3) 스코프 정보 생성
- 현재 컨텍스트의 유효 범위를 나타내는 스코프 정보를 생성한다.
- 스코프 정보는 연결 리스트와 유사한 형식으로 만들어진다. => 스코프 체인
- 스코프 체인으로 현재 컨텍스트의 변수와 상위 실행 컨텍스트의 변수에 접근 할 수 있는 것이다.
- 현재 생성된 활성 객체가 스코프 체인의 제일 앞에 추가된다.
(4) 변수 생성
- 변수 객체 (== 활성 객체) : 생성되는 변수를 저장한다.
- 함수 인자는 각각의 프로퍼티가 만들어지고 값이 할당된다.
- 생성된 변수와 내부 함수는 메모리에 생성되기만 하고 초기화는 각 변수나 함수에 해당하는 표현식이 실행되기 전 까지 초기화되지 않는다.
(5) this 바인딩
- this 키워드를 사용하는 값이 할당된다.
=> 여기에 this가 참조하는 객체가 없으면 this는 전역 객체를 참조하게 된다.
(6) 코드 실행
- 코드가 실행되면서 변수나 함수 등의 초기화가 진행된다.
** 전역 실행 컨텍스트는 arguments 객체가 없고, 전역 객체 하나만을 포함하는 스코프 체인이 있다.
'CSE > Java Script' 카테고리의 다른 글
[Java Script] 객체지향 프로그래밍 : 클래스, 생성자, 메서드 (0) | 2021.09.14 |
---|---|
[Java Script] 스코프 체인 (0) | 2021.09.06 |
[Java Script] 함수와 프로토타입 체이닝 4 (0) | 2021.08.05 |
[Java Script] 함수와 프로토타입 체이닝 3 (0) | 2021.08.05 |
[Java Script] 함수와 프로토타입 체이닝 2 (0) | 2021.08.02 |