1.전화 (통화)
2.(새동물의) 울음소리, (사람의) 외침
1.이름을 지어주다, …라고 부르다
2.…라고 (묘사)하다
호출 스택(Call Stack)은 여러 함수들(functions)을 호출하는 스크립트에서 해당 위치를 추적하는 인터프리터 (웹 브라우저의 자바스크립트 인터프리터같은)를 위한 메커니즘입니다. 현재 어떤 함수가 동작하고있는 지, 그 함수 내에서 어떤 함수가 동작하는 지, 다음에 어떤 함수가 호출되어야하는 지 등을 제어합니다.
(from.MDN)
호출스택은 쉽게 말해 자바스크립트 함수들이 순서대로 작동하는 장소를 말합니다. stack의 사전적 의미처럼 자바스크립트 내의 함수들은 순차적으로 쌓이고, 실행되고, 제거됩니다.
호출스택의 동작원리를 알아보기전에 간단하게 자바스크립트를 작동시키는 엔진에 대해서 알아봅시다
자바스크립트엔진은 메모리힙(Memory Heap)이라는 곳과 호출스택(Call Stack)을 동작시킵니다.
이제 자바스크립트엔진이 어떻게 호출스택을 동작시키는지 보겠습니다.
😅 그 전에! 자바스크립트는 기본적으로 싱글 쓰레드 기반 언어입니다. 즉 호출 스택이 하나이고 한번에 한 가지 일만 처리할 수 있습니다!
function multiply(x, y) { return x * y; } function printSquare(x) { var s = multiply(x, x); console.log(s); } printSquare(5);
🤓추가로 개발자도구 Sources탭의 Call Stack블록에서 위와 같은 동작순서를 디버깅툴로 직접 볼 수 있습니다.
이 처럼 자바스크립트 호출스택은 함수가 순차적으로 쌓이면서(stack), 실행되고, 제거되는 동작원리를 가지고 있습니다. 그리고 LIFO(Last In First Out, 후입 선출)의 구조를 가지는 나열 구조인것도 알 수 있습니다.