실행 컨텍스트는 실행되는 코드 덩어리로 추상적인 개념이다.
실행 컨텍스트는 실행될 때 생성된다.
실행 컨텍스트에는 호이스팅 후 코드의 함수 본문 내용과 this
바인딩 등의 정보가 담긴다.
자바스크립트에서 실행 컨텍스트를 구성하는 방법은 함수(전역공간)를 실행하는 것뿐이다.(ES6에서 블록스코프 개념이 추가됨)
사용자가 함수를 호출했을 때 내부적으로 해당 함수를 실행하기 위해 필요한 환경 정보들을 불러 모아놓은 하나의 집합체 혹은 객체이다.
this
정보var a = 1;
function outer() {
console.log(a); // 1: 1
function inner() {
console.log(a); // 2: undefined
var a = 3;
}
inner();
console.log(a); // 3: 1
}
outer();
console.log(a); // 4: 1
this 바인딩? this의 정보를 담는 과정이라고 이해하면 된다.
콜스텍은 함수 호출이 쌓이는걸 말한다.
현재 어떤 함수가 동작하고 있는지, 다음에 어떤 함수가 호출되어야하는지 등을 제어하는 자료구조다.
프로그램이 함수 호출(Function call)을 추적할 때 사용하며, 각 function call 당 하나의 Stack들로 이루어져 있다.
Stack은 마지막에 들어온 것이 먼저 나가는 LIFO(Last In First Out) 구조를 가진 자료구조다.
순서대로 데이터가 쌓이고 나중에 쌓인 순서대로 데이터가 꺼내진다.
스택에서 데이터를 넣는 것을 push, 데이터를 꺼내는 것을 pop이라고 한다. push와 pop을 하는 위치를 top이라하고, 스택의 가장 아랫부분을 bottom이라고 한다.
개발자도구의 sources 탭에서 call stack을 확인해 볼 수 있다.
🔎 참고자료: 재귀와 스택
🔎 참고자료 🔎
- MDN
- 생활코딩
- PoiemaWeb
- javascript info
- 코어 자바스크립트
- 러닝 자바스크립트
- 인사이드 자바스크립트