Backend/JavaScript,NodeJS, Express

[JavaScript] 실행 컨텍스트와 자바스크립트의 동작원리

jellylucy 2022. 11. 15. 19:10

Execution Context 

자바스크립트 코드가 실행되고 연산되는 범위를 나타내는 추상적인 개념이다.

- 코드 작성 실행하는 것은 실행 컨텍스트 내부에서 실행되는 것이다. 즉 코드들이 실행되기 위한 환경이자 하나의 박스이자 컨테이너라 볼 수 있다.

자바스크립트 코드 실행에 필요한 정보

1. 변수

2. 함수 선언

3. 변수의 유효범위

4. this

 

실행 컨텍스트의 3가지 유형

1. Global

- 기본 실행 컨텍스트. 전역 컨텍스트에서 실행

- 두가지 작업 수행 (1) window 전역 컨텍스트 생성 (2) this를 전역 객체로 설정

2. Functional

- 함수가 호출될 때마다 해당 함수에 대한 새로운 실행 컨텍스트가 생성

- 실행 컨텍스트는 함수가 호출될 때 만들어진다.

3. Eval Function

- eval 함수 내에서 실행되는 코드도 실행 컨텍스트를 가진다.

 

Execution Stack

다른 프로그래밍 언어에서는 호출 스택 call stack이라고 불리는 것과 동일한 의미이다.

스택은 LIFO 구조 형태이다.

 

JS 엔진은 코드가 처음 실행되는 시점에서 Global Execution Context 를 생성하고 Execution Stack에 Push 한다.

그리고 엔진이 함수 호출을 찾을 때마다 해당 함수에 대한 새로운 실행 컨텍스트를 생성해서 Execution Stack 의 맨 위로 푸시합니다.

 

Javascript 엔진은 실행 컨텍스트가 스택의 맨 위에 있는 함수를 실행한 뒤 함수가 종료되면

스택에서 제거한 뒤 호출 스택은 최신화된 스택에서 맨 위의 컨텍스트를 이전과 동일한 로직으로 접근합니다.