본문 바로가기
Front-End, CS 스터디/항해99 - JavaScript 스터디

[자바스크립트 javascript] 실행 컨텍스트와 콜 스택

by 제니운 2022. 7. 20.
728x90

✅ 실행 컨텍스트와 콜 스택

 

1️⃣ 실행 컨텍스트(Execution context)

 

자바스크립트 코드가 실행되는 환경을 의미한다.

자바스크립트에는 대표적으로 두 가지 타입의 실행 컨텍스트(Execution context)가 있다.

 

실행할 코드에 제공할 환경 정보들을 모아놓은 객체들로 자바스크립트의 동적 언어로서의 성격을 가장 잘 파악할 수 있는 개념이다.

 

 

👌 Global Execution context

 

자바스크립트 엔진이 처음 코드를 실행할 때 Global Execution Context가 생성된다. 생성 과정에서 전역 객체인 Window Object(Node는 Global)를 생성하고 this가 Window 객체를 가리키도록 한다.

 

👌 Function Execution context

 

자바스크립트 엔진은 함수가 호출될 때마다 호출된 함수를 위한 Execution Context를 생성한다. 모든 함수는 호출되는 시점에 자신만의 Execution Context를 가진다.

 

 

자바스크립트는 실행 컨텍스트가 활성화되는 시점에 다음과 같은 현상이 발생한다.

 

1. 호이스팅이 발생한다(선언된 변수를 위로 끌어올린다).

2. 외부 환경 정보를 구성한다.

3. this 값을 설정한다.

 

 

2️⃣ 콜 스택

 

코드가 실행되면서 생성되는 Execution Context를 저장하는 자료구조

 

엔진이 처음 script를 실행할 때, Global Execution Context를 생성하고 이를 Call Stack에 push한다.

 

그 후, 엔진이 함수를 호출할 때마다 함수를 위한 Execution Context를 생성하고 이를 Call Stack에 push한다.

자바스크립트 엔진은 Call Stack의 Top에 위치한 함수를 실행하며, 함수가 종료되면 stack에서 제거(pop)하고 제어를 다음 Top에 위치한 함수로 이동한다.

 

 

🔹 정리 : 프로그램이 함수 호출을 추적할 때 사용한다.

 

참고 : https://velog.io/@mincho/%EC%8B%A4%ED%96%89-%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8%EC%99%80-%EC%BD%9C-%EC%8A%A4%ED%83%9D

728x90