실행 컨텍스트 구성


실행 컨텍스트는 다음과 같은 것들을 이용하면 call stack에 쌓이게 됩니다.

일반적으로 함수를 이용한 실행 컨텍스트를 사용합니다.

// var
var a = 1; // 전역 컨텍스트
function outer() { // outer 컨텍스트
	function inner() { // inner 컨텍스트
		console.log(a); // undefined
		var a = 3;
		console.log(a); // 3
	};
	inner();
	console.log(a); // 1
};
outer();
console.log(a); // 1

// let -> 에러? TDZ(일시적 사각지대) 구간에 빠지는 것 같음.
// inner 스코프 내에서 a의 선언이 있기 때문에 전역에 있는 a를 참조하지 못함
// 스코프의 시작 지점부터 초기화 시작 지점까지의 구간을 TDZ(Temporal Dead Zone)라고합니다.
let a = 1;
function outer() { // outer 컨텍스트
	function inner() { // inner 컨텍스트
		console.log(a);
		let a = 3;
		console.log(a);
	};
	inner();
	console.log(a);
};
outer();
console.log(a);

위의 코드를 실행했을 때 실행 컨텍스트의 스택은 다음과 같은 순서로 실행됩니다.

그리고 이러한 실행 컨텍스트를 구성할 때 생기는 것들이 있습니다.