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
  • 전체
    오늘
    어제
    • 분류 전체보기 (99)
      • k8s (1)
      • AWS (1)
      • 리눅스 (3)
      • 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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바