13.5.1 카드 짝 맞추기 게임의 호출 스택과 이벤트 루프
startGame() 함수가 호출되는 시점을 3.3 호출 스택과 이벤트 루프에서 나온 그림으로 살펴보겠습니다.
코드가 실행되면 anonymous() 함수가 먼저 호출 스택에 들어갑니다. 그리고 startGame() 함수가 호출되면 anonymous() 함수 위에 위치합니다(①). 기존 함수가 끝나기 전에 새 함수가 실행되면 새 함수는 기존 함수 위에 위치하는 것을 잊지 않았죠?
startGame()이 호출되면 startGame() 안에 있는 코드들이 위에서 아래의 순서로 실행됩니다. 먼저 shuffle() 함수가 실행되어 카드를 섞으면 shuffle() 함수가 종료됩니다. 따라서 shuffle() 함수는 startGame() 위에 위치했다가 종료되면 호출 스택을 빠져나갑니다(②).
그림 13-6 startGame( ) 함수 호출 시 호출 스택과 이벤트 루프 1