실행컨텍스트와 콜 스택

Mintaek·2022년 8월 9일
0

개념 정리

목록 보기
3/10
post-thumbnail

🔎 실행컨텍스트

실행 컨텍스트(Execution Context)

  • scope, hoisting, this, function, closure 등의 동작원리를 담고 있는 자바스크립트의 핵심원리

  • 실행 컨텍스트는 실행 가능한 코드가 실행되기 위해 필요한 환경

  • 코드가 실행되는 위치를 설명한다는 뜻의 Execution Context

전역컨텍스트와 함수실행컨텍스트

전역컨텍스트 (Global Execution context)

  • 자바스크립트 엔진이 코드를 실행할 때 처음으로 생성되는 실행 컨텍스트
    👉 아무런 코드가 없어도 두 가지 요소를 가진다.
         1) global object
         2) this ( 브라우저: Window, Node: global )
  • 실행 컨텍스트의 2가지 단계 — 생성, 실행
    1–1 생성단계
    👉global object 생성
    👉this변수 object 생성
    👉변수와 함수를 위한 메모리공간 확보
    👉변수 선언 부분에 undefined(기본값)로 초기화, 선언식 함수를 메모리 공간에 올림

    1–2 실행단계
         : 실질적으로 자바스크립트 엔진이 코드를 한 줄씩 읽고 실행하는 단계
    👉엔진이 코드를 한 줄씩 실행
    👉실제 값을 메모리 공간에 저장

함수실행컨텍스트 (Function Execution context)

  • 함수가 호출될 때마다 생성되는 컨텍스트

1–1 생성단계

👉argument object 생성(★글로벌 실행컨텍스트와의 차이점, global object 아님!)
👉this 변수 object 생성
👉변수와 함수를 위한 메모리 공간 확보
👉변수 선언 부분에 undefined로 초기화, 선언식 함수를 메모리 공간에 올림

➡️ 함수 실행컨텍스트는 함수가 호출되면 실행 스택에 쌓였다가, 실행을 마치면 콜스택에서 제거된다.

함수호출 ➡ 새로운 함수 실행 컨텍스트가 콜스택에 쌓임 ➡ 생성단계 ➡ 실행단계 ➡ 콜스택에서 제거

🔎 콜스택

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

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

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

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

1줄 요약 : 프로그램이 함수 호출을 추적할때 사용한다.

출처

profile
Slow and Steady Wins the Race

0개의 댓글