변경점 비교
콜 스택
변경전: 2024. 08. 12. 17:47:40 (luasenvy (luasenvy))
변경후: 2025. 11. 17. 09:13:02 (luasenvy (luasenvy))
## Stack

스택은 자료구조의 하나로 위 그림처럼 입력과 출력이을 한 곳에서만 이루어진수행한다. 입력과 출력을 한 곳에따라서만 이루어지기위 때문에그림처럼 순서대로 입력되고한 순서의 역순으로 출력된다. 'Last In First Out'~LIFO~, '후입선출' 등의 이름으로 불리기도 한다.
```js: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~되면 내부적으로 '콜 스택'이라고 하는 저장공간을 사용한다. 이름에서 볼 수 있듯이 스택 방식으로 관리되며 이곳에는 실행중인 함수들이 순서대로 저장된다. 함수가 호출될 때마다 호출된 함수를 스택에 입력하고 함수가 종료되면 스택으로부터 출력~제거~된다.
```js: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 순서로 콜 스택에 저장된다. 이렇게 실행되는 함수들은 자연스럽게 역순으로 종료되는데 스택의 입출력 형식과 동일한 것을 확인할 수 있다.검색결과
Advertisement