더북(TheBook)

shuffle() 함수가 종료된 후에는 createCard() 함수와 addEventListener(), appendChild() 메서드가 반복문에 의해 12번 호출 스택에 들어왔다 나갑니다. 물론 startGame() 위에서요. 여기서 주목할 점은 addEventListener() 메서드입니다. 이벤트 리스너는 addEventListener() 함수를 호출할 때 백그라운드에 등록됩니다. addEventListener()도 반복문에 의해 12번 호출되므로 백그라운드에는 이벤트 리스너가 12개 등록됩니다.

그림 13-7 startGame( ) 함수 호출 시 호출 스택과 이벤트 루프 2

다음으로 초반에 카드를 공개하는 코드가 실행됩니다. forEach() 메서드가 실행되고, 여기서 setTimeout() 함수가 처음 나옵니다. 1번 카드는 1초 후에, 2번 카드는 1.1초 후에, 마지막 카드는 2.1초 후에 뒤집히도록 타이머를 설정했습니다. 타이머도 호출되는 순간 백그라운드에 등록됩니다. 등록만 되고 실행되지는 않습니다. 타이머 12개가 백그라운드에 등록된 후에 5초 뒤에 카드를 감추는 setTimeout()이 호출됩니다. 이 타이머도 백그라운드에 등록됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.