This page was referenced on it(https://builtin.com/software-engineering-perspectives/javascript-call-stack)
stacks are similar to pancakes. What is stack? Software stacks are a data type similar to an array that behaves as a collection of elements. Each pancake represents some element, which we've added to the top of the stack. We can only remove each element from the top. Becasue of this linear structure, stacks are also referred to as LIFO or last in, first out.
스택은 선형의 구조를 가지고 있기 때문에 나중에 들어온 데이터가 가장 먼저 호출된다.
Then, what is a js call stack? 함수를 실행할 때마다 스택 구조에 쌓이기 시작한다. If it has a nested function, that nested function will get added to the top of the stack as well, and so on.
It's important to remember that JavaScript is largely a single-threaded process, meaning that JavaScript processes one command at a time. Asynchronous actions are handled differently.
하나의 시퀀스에서 명령이 실행된다. 다른 말로, 하나의 커멘드는 한 번씩 실행된다.
Once you've pushed all functions that need to run in a given script to the top of the stack in order of invocation, JaaScript starts resolving them in order from top to bottom, popping them off the stack.
분해되는 과정이 중요하다. 세세하게 쪼갤수록 코딩의 밀도는 올라가며 가치를 띈다. 음식을 만드는 과정과 비슷하다고 생각한다. 예를 들어 햄버거를 만든다고 가정했을 때, 양배추라는 요소를 넣어야 한다면, 양배추 통째로 넣지 않는다. 양배추를 분해해야 한다. 예를 들어 레시피가 있고 그 레시피대로 만드는 과정에서 하나의 음식이 만들어졌다고 가정해보자. 그런데 그 과정에서 누락되는 경우가 있거나 오인되는 점이 있었다고 하면 새로 만들어야 하나? 생략된 요소를 넣거나 요소의 변경을 이루어내면 된다. 물론 다시 만들어야 하는 경우도 있다.
It's important to udnerstand how JS works. If you not, you might be hard to resolve the debugging problems.
자바스크립트는 다중실행되지 않는다고 했다. 그 의미는 순서가 매우 중요함을 뜻한다. You couldn't pop off the element of bottom. You should pop off the element of top, first.
The stack is processed from top to bottom.
Computer memory is finite. If there are more elements pushed onto the stack than there is space, the stack will overflow. A recursive function is one that calls itself.