Hi

실행 컨텍스트 생성 과정 본문

WEB(웹)/javascript

실행 컨텍스트 생성 과정

SharingWorld 2018. 7. 3. 09:53

실행 컨텍스트 생성 과정

function execute(param1, param2) {
	var a = 1, b = 2;
	
	function func() {
		return a + b;
	}
	
	return param1 + param2 + func();
}

execute(3, 4);

활성 객체 생성

실행 컨텍스트가 생성되면 자바스크립트 엔진은 해당 컨텍스트에서 실행에 필요한 여러가지 정보를 담을 객체를 생성하는데, 이를 "활성 객체"라고 한다.


활성 객체

: 앞으로 사용하게 될 매개변수나 사용자가 정의한 변수 및 객체를 저장하고, 
새로 만들어진 컨텍스트로 접근 가능하게 되어있다.

엔진 내부에서 접근할 수 있다는 것이지 사용자가 접근할 수 있는건 X


arguments 객체 생성

활성 객체는 arguments 프로퍼티로 이 arguments 객체를 참조한다.


스코프 정보 생성

스코프 정보 : 현재 컨텍스트의 유효 범위


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


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


이 리스트로 현재 컨텍스트의 변수뿐 아니라, 상위 실행 컨텍스트의 변수도 접근이 가능하다.


이 리스트를 '스코프 체인'이라고 하는데, [[scope]] 프로퍼티로 참조 된다.


현재 생성된 활성 객체가 스코프 체인의 제일 앞에 추가되며, execute() 함수의 인자나 지역 변수 등에 접근할 수 있다.


변수 생성

생성되는 변수를 저장하는 변수 객체.


활성객체 === 변수 객체 
변수 객체 안에서, '호출된 함수 인자'는 각각의 프로퍼티가 만들어지고 그 값이 할당된다. 
만약 값이 넘겨지지 않았다면 undefined가 할당된다. 
변수나 내부 함수를 단지 메모리에 생성(instantiation)하고, 초기화(initialization)는 각 변수나 함수에 해당하는표현식이 실행되기 전까지는 이루어지지 않는다. 
표현식의 실행은 변수 객체 생성이 다 이루어진 후 시작된다.

this 바인딩

this 키워드를 사용하는 값이 할당된다.


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

코드 실행

실행 컨텍스트가 생성되고, 변수 객체가 만들어진 후에, 코드 실행이 된다.


변수의 초기화 및 연산, 또 다른 함수 실행 등이 이루어진다.

'WEB(웹) > javascript' 카테고리의 다른 글

replaceAll() 구현  (0) 2018.07.04
스코프 체인  (0) 2018.07.03
실행 컨텍스트 개념  (0) 2018.07.03
프로토타입 체이닝  (0) 2018.07.03
이벤트 발생 객체와 이벤트 객체  (0) 2018.07.01