# Call Stack

최정환·2021년 7월 1일
0

📋 호출 스택

  • 여러 함수들을 호출하는 해당 위치를 추적하는 인터프리터를 위한 많은 함수

  • 현재 어떤 함수가 동작하고있는 지, 그 함수 내에서 어떤 함수가 동작하는 지, 다음에 어떤 함수가 호출되어야하는 지 등을 제어(실행할 함수를 호출하면 스택에 무언가를 푸시하고 함수에서 돌아 오면 스택의 맨 위에서 팝)

  • LIFO (Last In, First Out) 원칙을 사용하여 함수 호출 (호출)을 임시로 저장하고 관리하는 데이터 구조

fucntion three(){
console.log("i love js");
}
fucntion two(){
  three();
}
fucntion one(){
  two()
}
fucntion zero(){
  one()
}

zero();

여기서 Call Stack은 아래와 같다

 three 
 two
 one
 zero

💡 오류가 발생하면 실패한 위치가 위로부터 아래로 내려간다.

function foo() {					dsad
throw new Error("!!");
}
function bar() {
  foo();
}
function zoo() {
  bar();
}

zoo();
Uncaught Error: !!
  foo
  bar
  zoo

📋 Heap(힙)

  • 객체는 힙 즉 대부분 구조화되지 않은 메모리 영역에 할당됩니다.
  • 변수와 객체에 대한 모든 메모리 할당이 여기서 발생합니다.


📋 Queue(큐)

  • JavaScript 런타임에는 처리 할 메시지 목록과 실행할 관련 콜백 함수 인 메시지 대기열이 포함
  1. 스택에 충분한 용량이 있으면 관련 함수를 호출하여 초기 스택 프레임을 생성하는 메시지를 대기열에서 꺼내 처리
  2. 스택이 다시 비워지면 메시지 처리가 종료
  • 기본적으로 이러한 메시지는 콜백 함수가 제공된 경우 외부 비동기 이벤트 (예 : 마우스 클릭 또는 HTTP 요청에 대한 응답 수신)에 대한 응답으로 대기

    예를 들어 사용자가 버튼을 클릭하고 콜백 기능이 제공되지 않은 경우 대기열에 메시지가 추가되지 않습니다.

0개의 댓글