개발

js 실행 컨텍스트 와 콜 스택

explosion149 2024. 11. 6.

 

JavaScript의 실행 컨텍스트(Execution Context)와 콜 스택(Call Stack)은
 JavaScript의 동작 방식을 이해하는 데 중요한 개념입니다.

 

 

 

실행 컨텍스트 (Execution Context)
실행 컨텍스트는 JavaScript 코드가 실행되는 환경을 나타내는 객체입니다.

 

변수 객체 (Variable Object): 현재 실행 컨텍스트에서 사용 가능한 모든 변수와 함수 선언을 포함합니다. 

이는 함수의 매개변수, 지역 변수, 그리고 함수 내에서 선언된 모든 변수들을 포함합니다.

스코프 체인 (Scope Chain): 현재 컨텍스트에서 접근할 수 있는 변수의 범위를 결정합니다. 

스코프 체인은 현재 실행 컨텍스트의 변수 객체와 외부 컨텍스트의 변수 객체를 연결하여, 

변수에 접근할 수 있는 경로를 제공합니다.

this 값: 현재 실행 컨텍스트에서의 this 키워드의 값을 정의합니다. 

이는 함수가 호출되는 방식에 따라 달라질 수 있습니다.

 

콜 스택 (Call Stack)

콜 스택은 현재 실행 중인 실행 컨텍스트의 목록을 관리하는 데이터 구조입니다. 

JavaScript는 단일 스레드 언어이므로, 한 번에 하나의 실행 컨텍스트만 실행할 수 있습니다.

 

푸시 (Push): 함수가 호출되면, 해당 함수의 실행 컨텍스트가 콜 스택의 맨 위에 푸시됩니다. 

이때, 함수의 매개변수와 지역 변수, 그리고 this 값이 설정됩니다.

팝 (Pop): 함수의 실행이 완료되면, 해당 실행 컨텍스트가 콜 스택에서 팝됩니다. 

이때, 제어는 이전 실행 컨텍스트로 돌아갑니다.

스택 오버플로우: 콜 스택의 깊이가 너무 깊어지면(예: 무한 재귀 호출), 

스택 오버플로우가 발생하여 프로그램이 중단됩니다.

 

예시

function firstFunction() {
    secondFunction();
    console.log("First Function");
}

function secondFunction() {
    console.log("Second Function");
}

firstFunction();

 

firstFunction이 호출되면, firstFunction의 실행 컨텍스트가 콜 스택에 푸시됩니다.
secondFunction이 호출되면, secondFunction의 실행 컨텍스트가 콜 스택에 푸시됩니다.
secondFunction의 실행이 완료되면, 해당 컨텍스트가 팝되고, 제어가 firstFunction으로 돌아갑니다.
firstFunction의 나머지 코드가 실행되고, 해당 컨텍스트가 팝됩니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'개발' 카테고리의 다른 글

js outerEnvironmentReference  (0) 2024.11.06
js record와 호이스팅  (0) 2024.11.06
js null 과 undefined  (0) 2024.11.06
js 불변객체  (0) 2024.11.06
js 데이터 타입 과 메모리 관리  (4) 2024.11.05

댓글

💲 추천 글