자신에게 친절할 것 :)

Web Developing/JS

[JS] 개념:Call Stack

Tashapark 2024. 3. 16. 16:43
728x90

// Nomard Coder의 33 Concepts of JavaScript 듣는 중//

1. Call Stack

  • JS가 함수 실행을 핸들 하는 방법 중 하나
  • 실행할 함수를 stack 위에 올림. 함수 다 실행하면 없애고, 불러올게 없어지면, 함수가 끝난 것.
  • 순서대로 포함된 함수 전부 끝까지 리스트를 따라갔다가, 다시 위에서부터 내려오면서 없애며 "실제로 실행" 되는 것

- Crome-source에서 확인하면 에러의 위치에 따라서 나타나는 에러 개수가 다른 데 그건 함수가 리스트로

쭉 위로 쌓이면서 다 확인되고(anonymous -> zero -> one, -> two -> three) 위에서부터 실행되면서 하나씩 제거되면서 아래로 내려옴

 

function three() {
  console.log("great");
}

function two() {
  three();
}

function one() {
  two();
}

function zero() {
  one();
  throw Error("omg it's an error");
}
zero();

 

concepts.js:15 Uncaught Error: omg it's an error

at zero (concepts.js:15:9)

at concepts.js:18:1

--> 에러가 2개 뜸 제로랑, js 파일 자체만 실행되지 못했기 때문

 

function three() {
  console.log("great");
  throw Error("omg it's an error");
}

function two() {
  three();
}

function one() {
  two();
}

function zero() {
  one();
}

zero();

 

concepts.js:3 Uncaught Error: omg it's an error

at three (concepts.js:3:9)

at two (concepts.js:7:3)

at one (concepts.js:11:3)

at zero (concepts.js:15:3)

at concepts.js:18:1

--> 얘는 다 실행 안돼서 5개 다 뜸. 올라갔다가 내려오면서 실행이 안 됐기 때문임

++ 즉 함수는 리스트가 추가되는 것이고, 실행이 완료되면 함수가 리스트에서 제거되는 것.

728x90
반응형

'Web Developing > JS' 카테고리의 다른 글

[JS] 기본적인 개념 2  (0) 2024.03.16
[JS] 기본적인 개념 1  (1) 2024.03.16
[JS] 날씨 정보 나타나게 하기 (API사용)  (1) 2024.03.16
[JS] background image 변경하기  (0) 2024.03.16
[JS] to-do list 만들기  (1) 2024.03.16