develop/script

콜 스택(call stack)

i'm suna 2023. 10. 19. 16:48
var a = 1;
function outer() {
	function inner() {
		console.log("3",a); //이 시점에서 변수a는 생성되어있지 않다.
		var a = 3;	//undefined
	}
	inner(); // inner함수 호출
	console.log("2",a);	//1
}
outer(); // outer 함수 호출
console.log("1",a);	//1

실행 컨텍스트란 실행할 코드에 제공할 환경 정보들을 모아놓은 객체라고 했었죠. 그 객체. 즉, 동일 환경에 있는 코드를 실행할 때 필요한 환경 정보들을 모아 컨텍스트를 구성하고 이것을 위에서 설명드린 ‘스택’의 한 종류인 **콜스택**에 쌓아올립니다. 가장 위에 쌓여있는 컨텍스트와 관련된 코드를 실행하는 방법으로 코드의 환경 및 순서를 보장할 수 있어요.

  1. 컨텍스트의 구성
    1. 구성방법(여러가지가 있지만, 사실 우리는 함수만 생각하면 돼요 👍)
      1. 전역공간
      2. eval()함수
      3. 함수(우리가 흔히 실행컨텍스트를 구성하는 방법)
    2. 결국은 특정 실행 컨텍스트가 생성되는(또는 활성화되는) 시점이 콜 스택의 맨 위에 쌓이는(노출되는) 순간을 의미하구요. 곧, 현재 실행할 코드에 해당 실행 컨텍스트가 관여하게 되는 시점을 의미한다고 받아들여주시면 정확합니다! 👍👍