Call Stack?

Lenny·2022년 5월 21일
0
post-thumbnail

콜 스택

  • 개인적으로 이해한 내용이므로 정확하지 않을 수 있습니다.

자바스크립트가 함수 호출을 핸들링하는 방법 중 하나이다.

자바스크립트는 실행할 함수가 있으면 스택위에 올린다.

이렇게 생긴 구조가 스택이다.

자바스크립트는 실행할 함수들을 스택에 올리고, 실행한 함수가 끝나면 스택에서 제거한다.

코드가 이렇게 있으면 스택은 어떻게 쌓이게 될까?

이런식으로 쌓이게 될 것이다!

먼저 zero를 발견하고, 스택에 쌓는다.
그런데 zero 함수 내부에서 one을 발견하고, one 을 스택에 쌓는다.
같은 원리로 two, three 를 차례대로 쌓고, console.log("hello") 를 마지막으로 쌓는다.

이제 스택에 쌓을 함수를 다 찾았으므로, 맨 위에서부터 함수를 실행한다.

이 과정은 코드와 함께 살펴보도록 하자!

먼저, console.log() 함수가 실행되고, 그 다음 쌓여있는 three 가 실행된다.

three 내부에 실행할 것이 없으므로 three 함수도 호출이 끝난다.

다른 함수들도 마찬가지다.

그러면, 다음과 같은 코드는 어떤흐름으로 실행되게 될까?

위에서 서술했던 흐름과 똑같다.

console.log() 를 시작으로 one 까지 스택이 차례로 제거된다.

이때, one 까지 스택이 제거되고, 그 다음 줄 throw Error("Error!"); 을 실행하게된다.
그 다음 zero() 가 콜 스택에서 제거된다. (함수 실행이 끝났으니까)


참고

profile
🧑‍💻

0개의 댓글