실행 컨텍스트(Execution Context)

자바스크립트의 실행 컨텍스트(Execution Context)는 코드가 실행되기 위한 환경이라고 볼 수 있다.

코드가 실행될 때, 자바스크립트 엔진은 실행 컨텍스트를 생성하고 이를 실행 컨텍스트 스택(Execution Context Stack)에 쌓아 나가면서 코드를 실행해 나간다. 실행 컨텍스트는 크게 세가지로 나뉜다

  • 글로벌 실행 컨텍스트(Global Execution Context)
  • 함수 실행 컨텍스트(Function Execution Context)
  • eval 실행 컨텍스트(Eval Execution Context)

글로벌 실행 컨텍스트

  • 자바스크립트 코드가 처음 실행될 때 만들어지는 기본적인 실행 컨텍스트
  • 전역 객체와 전역 변수를 관리함

함수 실행 컨텍스트

  • 함수가 호출될 때 마다 새로운 실행 컨텍스트가 생성된다.
  • 해달 함수의 지역 변수, 매개변수, this 값 등을 관리한다.

ex)

var x = '글로벌'; // 글로벌 실행 컨텍스트에서 선언된 변수

function outer() { // outer 함수 실행 컨텍스트
    var y = '아우터';
    console.log(x); // '글로벌'
    console.log(y); // '아우터'

    function inner() { // inner 함수 실행 컨텍스트
        var z = '이너';
        console.log(x); // '글로벌'
        console.log(y); // '아우터'
        console.log(z); // '이너'
    }

    inner();
}

outer();

함수를 실행하면 다음과 같은 순서로 실행 컨텍스트가 생성되고 소멸한다.

  1. 자바스크립트 실행 초기에 글로벌 실행 컨텍스트가 생성
  2. outer 함수가 호출되면서 outer 함수의 실행 컨텍스트가 생성되고, 실행 컨텍스트 스택의 맨 위에 위치하게 된다.
  3. outer 함수 내부에서 inner 함수가 호출되면, inner 함수의 실행 컨텍스트가 생성되고, 마찬가지로 실행 컨텍스트 스택의 맨 위에 위치하게 된다.
  4. inner 함수가 종료되면, inner함수의 실행 컨텍스트가 스택에서 제거된다.
  5. outer함수가 종료되면 outer 함수의 실행 컨텍스트도 스택에서 제거된다.
  6. 프로그램 실행이 완료되면 글로벌 실행 컨텍스트도 스택에서 제거된다.

'Programming > JavaScript' 카테고리의 다른 글

바닐라 자바스크립트 + npm  (0) 2024.03.20
This에 관하여  (0) 2024.03.08
Promise/Callback 에 관한 고찰  (0) 2024.03.04
async/await 문법  (0) 2024.03.04
var, let. const의 차이  (0) 2024.02.28