자바스크립트 코드가 실행되고 연산되는 범위를 나타내는 추상적인 개념을 말한다. 즉 개발자가 코드를 작성하고 실행 할 때는 실행 컨텍스트(Execution Context) 내부에서 실행되고 있는 것이다. 다시 말해 코드들이 실행되기 위한 환경이자 하나의 박스이자 컨테이너라 볼 수 있다.
스택은 LIFO(Last in, First out)구조 형태입니다.
Javascript 엔진은 script
요소를 처음으로 만나는 시점에서 Global Execution Context를 생성하고 Execution Stack에 push 합니다.
그리고 엔진이 함수 호출을 찾을 때마다 해당 함수에 대한 새로운 실행 컨텍스트를 생성해 Execution Stack의 맨 위로 푸시합니다.
Javascript 엔진은 실행 컨텍스트가 스택에 맨 위에있는 함수를 실행한 뒤 함수가 종료되면 스택에서 제거한 뒤 호출 스택은 최신화된 스택에서 맨위의 컨텍스트를 이전과 동일한 로직으로 접근합니다.
let a = "Notion posting";
function first(){
console.log("Inside first function");
second();
console.log("Again inside first function");
}
function second(){
console.log('Inside second function');
}
first();
console.log('Inside Global Execution Context');
/*
Inside first function
Inside second function
Again inside first function
Inside Global Execution Context
*/
레퍼런스 :
https://catsbi.oopy.io/fffa6930-ca30-4f7e-88b6-28011fde5867
https://www.youtube.com/watch?v=61iolhWgQt0&ab_channel=%EC%83%9D%ED%99%9C%EC%BD%94%EB%94%A9