JavaScript 의 동작방식

2022. 11. 12. 18:56·프로그래밍 언어/JavaScript

살펴볼 내용

- 코드를 통해 알아보는 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 런타임 환경은 메모리 할당을 담당하는 메모리 힙과 함수가 호출되면 스택으로 쌓이는 콜스택(호출 스택)으로 구성되어 있습니다.

'프로그래밍 언어 > JavaScript' 카테고리의 다른 글

[JavaScript] 예시를 통해 알아보는 this  (0) 2022.12.28
[JavaScript] 문자열 자르기 (substr, substring, slice)  (0) 2022.12.05
[JavaScript] 반복문  (0) 2022.11.05
[JavaScript] 호이스팅  (0) 2022.11.05
[JavaScript] 실행 컨텍스트  (0) 2022.11.05
'프로그래밍 언어/JavaScript' 카테고리의 다른 글
  • [JavaScript] 예시를 통해 알아보는 this
  • [JavaScript] 문자열 자르기 (substr, substring, slice)
  • [JavaScript] 반복문
  • [JavaScript] 호이스팅
rondeveloper
rondeveloper
  • rondeveloper
    Ron's learning record
    rondeveloper
  • 전체
    오늘
    어제
    • 분류 전체보기 (100)
      • k8s (1)
      • AWS (1)
      • 리눅스 (4)
      • Docker (8)
      • 라이브러리 & 프레임워크 (14)
        • React (2)
        • NestJS (8)
        • Spring (0)
        • Django (3)
        • FastAPI (1)
      • 웹 (2)
        • Nginx (1)
      • 프로그래밍 언어 (29)
        • HTML (0)
        • CSS (0)
        • JavaScript (21)
        • Python (3)
        • Node.js (0)
        • TypeScript (4)
        • Java (1)
      • Today I learned (9)
      • 알고리즘 (9)
        • 백준 (0)
        • 프로그래머스 (8)
        • 개념 (1)
      • 티끌모아 태산 (5)
        • 하루에 영단어 하나씩 (5)
        • 독서 (0)
      • 시행착오 (3)
      • 데이터베이스 (2)
        • MySQL (0)
      • 컴퓨터 과학 (8)
        • 네트워크 (2)
        • 운영체제 (0)
        • 데이터베이스 (2)
        • 자료구조 (4)
      • 포트폴리오 (4)
        • JJINCAFE IN SEOUL (4)
        • CODEUNICORN (0)
      • 회고 (0)
      • CICD (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    django
    쿠버네티스
    기초
    스택
    도커
    typeorm
    iterable
    nestjs
    IP 주소
    redis
    리눅스
    컨테이너
    네트워크
    mysql
    typescript
    레벨2
    배열
    모듈
    Til
    생활코딩
    Docker
    Kubectl
    FastAPI
    자바스크립트
    Python
    Linux
    Kubernetes
    코딩테스트
    javascript
    프로그래머스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
rondeveloper
JavaScript 의 동작방식
상단으로

티스토리툴바