Memory Heap
과Call Stack
으로 구성
Memory Heap
- 데이터를 만들 때 저장되는 공간, 즉 메모리 할당이 일어나는 공간
- 데이터들이 구조적으로 저장되지는 않는다
Call Stack
- 함수 등을 실행하는 순서에 따라 차례대로 쌓아두는 공간
- 호출된 곳을 기억하기 때문에 호출된 이후 어디로 돌아와야 하는지도 알 수 있다
자바스크립트는 프로그래밍 언어 자체를 말하는 것이고 자바스크립트에서 작성한 코드들을 어떤 순서로 어떻게 실행할 것인지 결정하고 이해하는 것이 자바스크립트 엔진인 것이다
자바스크립트 엔진은 Call Stack에 쌓인 위에서부터 차례대로 실행이 된다. 그래서 자바스크립트 엔진은 비동기 처리를 할 수 없다.
function first() {
second();
onsole.log('first');
}
function second() {
console.log('second');
}
function main() {
first();
console.log('main');
}
main();
main()이 가장 먼저 호출되었기 때문에 Call Stack에 제일 먼저 들어간다
이후 main()에서 first()를 호출했기 때문에 first()가 Call Stack에 두번째로 들어간다
이후 first()에서 second()를 호출했기 때문에 second()가 Call Stack에 세번째로 들어간다
Call Stack에서 나갈 때는 Stack이 가지고 있는 LIFO 자료구조에 의해 second(), first(), main() 순으로 Call Stack에서 나가게 된다
main()에서 return 됐으므로 Call Stack은 비워진다
(return이 생략되면 암묵적으로 return; 추가해줌)
이러한 과정을 통해 함수 안에서 다른 함수를 호출하고 또 다른 함수를 호출해도 순차적으로 호출된 순서를 따라서 다시 돌아온다
즉 위의 코드 결과는 second, first, main 순으로 출력된다
LIFO ?
Last-In, First-Out
: 마지막에 들어온 것이 제일 먼저 나가는 것으로 자료구조중에 하나
😍 코드 지적은 언제나 환영입니다. 읽어주셔서 감사합니다. 😍