콜 스택(Call Stack)이란 무엇인가

#resource
#javascript
작성일:2025. 4. 19.
수정일:2025. 4. 19.

콜 스택은 함수 호출을 추적하기 위해 자비스크립트 엔진이 사용하는 LIFO(Last-in, First-out) 구조의 메모리 영역이다. 코드가 실행되면서 함수가 호출되면, 해당 함수의 실행 컨텍스트가 생성되어 콜 스택의 맨 위에 쌓인다(push). 함수 실행이 완료되어 값을 반환하면, 해당 실행 컨텍스트는 콜 스택에서 제거된다(pop). 콜 스택의 가장 위에 있는 실행 컨텍스트가 현재 리행중인 컨텍스트이다.

콜 스택은 자바스크립트의 동기적인 코드 실행 순서를 관리한다. 하나의 작업이 완료되어야 다음 작업이 스택에서 실행될 수있다. 이는 이벤트 루프와 비동기 처리 방식을 이해하는 데 필수적인 배경지식 이다.

동작 예시#

  1. 전역 코드가 실행되면 전역 실행 컨텍스트가 스택에 추가된다.
  2. 함수 A가 호출되면 A의 함수 실행컨텍스트가 스택 위에 추가된다
  3. 함수 A 내부에서 함수 B가 호출되면 B의 함수 실행컨텍스트가 스택 위에 추가된다.
  4. 함수 B가 실행을마치고 반환하면 B의 함수 실행 컨텍스트가 스택에서 제거된다.
  5. 함수 A가 실행을 마치고 반환하면 A의 함수 실행 컨텍스트가 제거된다
  6. 모든 코드가 실행되면 전역 실행 컨텍스트가 스택에서 제거된다.

Stack Oeverflow#

함수가 자기 자신을 계속해서 호출하는 재귀 호출 등에서 종료 조건이 없거나 잘못된 경우, 콜 스택에 실행 컨텍스트가 무한히 쌓이게 되어 스택 용량을 초과하면 "Stack Overflow"에러가 발생한다.