728x90
728x90

 

01 실행 컨텍스트 execution context


실행컨텍스트는 자스에서 중요한 개념 중에 하나이며 클로저를 지원하는 언어에서 유사한 개념이 적용되어 있다.

실행컨텍스트란 실행할 코드에 제공할 환경 정보들을 모아놓은 객체
자바스크립트 언어의 동적 성격이 잘 드러나는 개념이다.

어떤 실행컨텍스트가 활성화되는 시점에 선언된 변수를 위로 끌어올리고 (호이스팅)
외부 환경 정보를 구성하고, this 값을 설정 하는 등의 동작을 수행하는데 여기서 고유 현상이 발생 (어떤 현상인지는 안나옴ㅋ)



스택 stack

세탁바구니에 세탁물을 넣는 것과 같은 구조다. 많은 프로그래밍 언어들은 스택이 넘칠 때 에러를 뱉는다.
비어있는 스택에 순서대로 데이터 a b c d 를 저장하면 꺼낼 때 반대 순서( d c b a)로 밖에 못 꺼낸다.

 

큐 queue

베란다 호스 안의 흐르는 물과 같다. 한 쪽은 입력만, 다른 한쪽은 출력만을 담당하는 구조로
비어있는 큐에 순서대로 데이터 a b c d 를 저장하면 꺼낼 때는 a b c d 순서로 밖에 못 꺼낸다.

 

동일한 환경(하나의 실행 컨텍스트를 구성할 수 있는 방법으로 전역공간, 함수, eval()함수 등) 에 있는 코드를 실행할 때
필요한 환경 정보들을 모아 컨텍스트를 구성하고
이를 콜 스택에 쌓아올렸다가 
가장 위에 쌓여있는 컨텍스트와 관련있는 코드들을 실행하는 식으로
전체 코드의 환경과 순서를 보장한다.

--> 자동으로 생성되는 전역공간과 eval을 제외하면 실행컨텍스트를 구성하는 방식은 통상적으로 함수를 실행하는 것.
그리고 ES6에서는 블록 [ ]에 의해서도 새로운 실행 컨텍스트가 생성된다.

 

var a = 1;
function outer(){
	function inner(){
		console.log(a); // undefined
		var a = 3;
	}
	inner(); 
	console.log(a); // 1
}
outer();
console.log(a); // 1

 

...38페이부터 볼 것

 

 

02 VariableEnvironment, LexicalEnvironment

서로 담기는 내용은 같지만 VariableEnvironment는 최초 실행 시의 스냅샷을 유지하는 차이점이 있다.


728x90
728x90
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,

v