JavaScript 엔진

Seung·2022년 2월 27일
0

😄 JavaScript 엔진

Memory HeapCall 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
: 마지막에 들어온 것이 제일 먼저 나가는 것으로 자료구조중에 하나


😍 코드 지적은 언제나 환영입니다. 읽어주셔서 감사합니다. 😍

profile
지적은 제 발전의 원동력입니다. 사소한 것이라도 지적해주세요 :)

0개의 댓글