실행 컨텍스트

ken6666·2024년 3월 3일
0

JS

목록 보기
19/39

실행 컨텍스트의 역할

// 전역 변수 선언
const x = 1;
const y = 2;

// 함수 정의
function foo(a) {
  // 지역 변수 선언
  const x = 10;
  const y = 20;

  // 메서드 호출
  console.log(a + x + y); // 130
}

// 함수 호출
foo(100);

// 메서드 호출
console.log(x + y); // 3

1. 전역 코드의 평가

  • 소스코드 평가 과정에서는 선언문만 먼저 실행한다. 변수 선언문과 함수 선언문이 먼저 실행된다.
  • var 키워드로 선언된 전역 변수와 전역 함수는 전역 객체의 프로퍼티가 된다.

2. 전역 코드 실행

  • 전역 변수에 값이 할당되고 함수가 호출된다.

3. 함수 코드 평가

  • 매개변수와 지역 변수 선언문이 먼저 실행되고 실행컨텍스트가 관리하는 지역 스코프에 등록된다
  • arguments 객체가 생성되어 지역 스코프에 등록되고 this 바인딩도 결정된다.

4. 함수 코드 실행

  • 함수 코드가 순차적으로 실행되기 시작한다. 이때 매개변수와 지역 변수에 값이 할당된다.

이 처럼 코드가 실행되려면 스코프, 식별자, 코드 실행 순서 등의 관리가 필요하다

실행 컨텍스트란?

  • 소스 코드를 실행하는데 필요한 환경을 제공하고 코드의 실행 결과를 실제로 관리하는 영역이다.
  • 실행 컨텍스트는 식별자를 등록하고 관리하는 스코프와 코드 실행 순서 관리를 구현한 내부 매커니즘으로 모든 코드는 실행 컨텍스트를 통해 실행되고 관리된다.

식별자와 스코프는 실행 컨텍스트의 렉시컬 환경 으로 관리하고 코드 실행 순서는 실행 컨텍스트 스택으로 관리한다

실행 컨텍스트 스택

  • 코드가 실행되는 시간의 흐름에 따라 실행 컨텍스트 스택에는 추가되고 제거된다
  • 실행 컨텍스트 스택은 코드의 실행 순서를 관리한다.
  • 실행 컨텍스트 스택의 최상위에 존재하는 실행 컨텍스트는 언제나 현재 실행중인 실행 컨텍스트다. 이를 실행 중인 실행 컨텐스트라 부른다.

렉시컬 환경

렉시컬 환경은 스코프와 식별자를 관리한다

0개의 댓글