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
반응형