[javascript] 실행 컨텍스트와 호출 스택(call stack)의 관계는 무엇인가?

자바스크립트에서 실행 컨텍스트와 호출 스택은 서로 밀접한 관계를 가집니다.

실행 컨텍스트

실행 컨텍스트란 코드가 실행되기 위한 환경을 제공하고, 코드를 실제로 실행할 수 있게 해주는 객체입니다. 실행 컨텍스트는 변수, 함수 선언 및 변수의 유효 범위 등을 관리합니다.

호출 스택

호출 스택은 현재 실행 중인 함수나 메소드들의 순서화된 스택입니다. 함수가 호출될 때마다 해당 함수의 실행 컨텍스트가 호출 스택의 맨 위에 추가되고, 함수가 종료되면 해당 실행 컨텍스트가 호출 스택에서 제거됩니다.

따라서 호출 스택은 실행 컨텍스트의 변경을 추적하는 메커니즘으로 볼 수 있습니다. 현재 실행 중인 함수나 메소드의 실행 컨텍스트가 호출 스택의 맨 위에 있고, 이전에 호출된 함수나 메소드의 실행 컨텍스트들은 그 아래에 순서대로 쌓입니다.

자바스크립트 엔진은 호출 스택을 사용하여 코드 실행의 흐름을 관리하며, 실행 컨텍스트의 생성과 관리를 담당합니다.

따라서 실행 컨텍스트와 호출 스택은 코드 실행의 흐름과 상태를 추적하고 관리하는 데 중요한 역할을 하며, 서로 밀접하게 연관되어 있습니다.

참고 자료

  1. MDN Web Docs: Execution context