콜 스택
Chapter 1
Stack
스택
스택은 자료구조의 하나로 위 그림처럼 입력과 출력이 한 곳에서만 이루어진다. 입력과 출력을 한 곳에서만 이루어지기 때문에 순서대로 입력되고 역순으로 출력된다. 'Last In First Out'(LIFO), '후입선출' 등의 이름으로 불리기도 한다.
stack.js
const store = [];
// 배열의 마지막 부분을 통해서만 입력한다.
store.push(1);
store.push(2);
store.push(3);
let cursor;
// 배열의 마지막 부분을 통해서만 출력한다.
cursor = store.pop(); // 3
cursor = store.pop(); // 2
cursor = store.pop(); // 1
Call Stack
자바스크립트에서는 함수(Function)가 호출(call)되면 내부적으로 '콜 스택'이라고 하는 저장공간을 사용한다. 이름에서 볼 수 있듯이 스택 방식으로 관리되며 이곳에는 실행중인 함수들이 순서대로 저장된다. 함수가 호출될 때마다 호출된 함수를 스택에 입력하고 함수가 종료되면 스택으로부터 출력(제거)된다.
Function Call
const B = (num) => num + Math.trunc(Math.random() * 100);
const A = () => B(Math.trunc(Math.random() * 50))
A();
위 예제코드처럼 함수 내에서 다시 함수를 호출하는 경우가 있다고 가정한다면 가장 먼저 호출된 A가 저장공간에 할당되고 A가 종료되기 전 B가 호출되기 때문에 A, B 순서로 콜 스택에 저장된다. 이렇게 실행되는 함수들은 자연스럽게 역순으로 종료되는데 스택의 입출력 형식과 동일한 것을 확인할 수 있다.
초판: 2024. 08. 12. 17:47:40
© 2024 이 문서는 "CC BY 4.0 국제규약" 라이선스로 배포 되었습니다. 모든 권리는 저자에게 있습니다.