더북(TheBook)

앞의 코드에서는 console.log('내가 먼저');이 끝난 후 (anonymous) 함수까지 호출 스택에서 빠져나가며 호출 스택이 텅 빕니다. 하지만 이번에는 console.log('내가 먼저'); 다음에 clearTimeout(timerId);이 있습니다. 이벤트 루프는 호출 스택이 비어 있지 않으면 태스크 큐의 콜백 함수를 호출 스택으로 올릴 수 없습니다. 이때 clearTimeout()이 실행되면서 태스크 큐에 있는 콜백 함수가 제거됩니다. 그래서 콜백 함수가 실행되지 않습니다. 함수는 호출 스택에 들어가야만 실행될 수 있기 때문입니다.

그림3-12 clearTimeout( ) 함수가 태스크 큐의 타이머 취소

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