살펴볼 내용

- 코드를 통해 알아보는 JavaScript 동작 방식 
- JavaScript 런타임 환경 구성

JavaScript의 동작 방식(싱글 스레드, 콜스택)

JavaScript 는 싱글 스레드 즉 단 하나의 스레드를 기반으로 한 프로그래밍 언어입니다.

싱글 스레드라는 말은 하나의 메인 스레드와 하나의 콜스택(호출 스택)을 가진다는 것입니다.

하나의 메인 스레드에서 호출되는 함수들은 하나의 콜스택에 쌓입니다. 이 함수들은 스택 구조 특성상 LIFO(Last In First Out) 방식으로 실행됩니다.

예시를 통해 알아보기

function a() {
  function b() {
    function c() {
      console.log("c");
    }
    c();
    console.log("b");
  }
  b();
  console.log("a");
}

a();

이 코드가 실행되면 콜스택에 호출된 순서대로 쌓입니다. a()가 먼저 쌓인 후 b()가 쌓이고 이후 c() 가 쌓입니다.

실행 순서는 c(), b(), a() 입니다. 그 결과 콘솔 창에는 c, b, a 순으로 출력됩니다.

함수가 호출되면 콜스택에 쌓이고, 실행이 끝나면 함수는 콜스택에서 제거됩니다.

JavaScript 런타임 구성(메모리 힙, 콜스택)

JavaScript 런타임은 메모리 힙(memory heap)과 콜스택(call stack, 호출 스택)으로 구성되어 있습니다.

메모리 힙 : 메모리 할당을 담당하는 곳.
콜스택: 함수가 호출되면서 스택으로 쌓이는 곳.

정리

JavaScript 는 싱글 스레드 기반 프로그래밍 언어입니다.
JavaScript 는 하나의 메인 스레드와 하나의 콜스택(호출 스택)을 가지고 있습니다.
JavaScript 런타임 환경은 메모리 할당을 담당하는 메모리 힙과 함수가 호출되면 스택으로 쌓이는 콜스택(호출 스택)으로 구성되어 있습니다.
복사했습니다!