본문 바로가기
IT/javascript

자바스크립트 콜 스택(Call Stack)

by 뉴코딩맨 2023. 4. 17.
자바스크립트의 콜 스택(Call Stack)은 함수 호출의 실행 컨텍스트(context)를 저장하는 자료구조로서, 함수 호출 시 함수의 실행 컨텍스트를 콜 스택에 저장하고, 함수가 실행을 완료하면 해당 실행 컨텍스트를 스택에서 제거하는 방식으로 동작합니다.
 
자바스크립트는 함수를 호출할 때마다 실행 컨텍스트를 생성하고, 이 실행 컨텍스트에는 함수의 변수, 매개변수, 내부 함수 등의 정보가 저장됩니다. 이러한 실행 컨텍스트들은 콜 스택에 쌓이게 되며, 함수 실행이 완료되면 해당 실행 컨텍스트는 스택에서 제거됩니다.

 

사용법

 
예를 들어, 다음과 같은 코드가 있다고 가정해봅시다.
 
function foo() {
	console.log('foo');
}

function bar() {
    console.log('bar');
    foo();
}

bar();
 
위 코드에서 bar() 함수를 호출하면, bar() 함수의 실행 컨텍스트가 콜 스택에 저장됩니다. 그리고 bar() 함수 내부에서 foo() 함수를 호출하게 되면, foo() 함수의 실행 컨텍스트가 콜 스택에 저장됩니다. 이후 foo() 함수의 실행이 완료되면 해당 실행 컨텍스트는 스택에서 제거되고, bar() 함수의 실행이 완료되면 마찬가지로 해당 실행 컨텍스트는 스택에서 제거됩니다.
 
콜 스택은 함수 호출의 순서를 기억하고, 함수의 실행 순서를 제어하는 데 중요한 역할을 합니다. 따라서 콜 스택이 너무 깊어지거나 콜 스택 오버플로우(overflow)가 발생할 경우, 스택 오류(Stack Overflow)가 발생할 수 있습니다. 이러한 경우에는 함수 호출의 깊이를 줄이거나, 재귀 호출을 최적화하여 스택의 크기를 줄이는 등의 방법으로 해결할 수 있습니다.
 
콜 스택은 자바스크립트 엔진의 핵심적인 구성 요소 중 하나이며, 자바스크립트 코드의 실행 과정에서 매우 중요한 역할을 합니다. 따라서 자바스크립트 개발자는 콜 스택에 대한 이해와 관리가 필수적입니다.

댓글