더북(TheBook)

다음 코드의 결과를 예상해 보세요. setTimeout()의 밀리초가 0입니다. 즉, 바로 실행하라는 뜻입니다.

const timerId = setTimeout(() => {
  console.log('0초 뒤에 실행됩니다.');
}, 0);
console.log('내가 먼저');
clearTimeout(timerId);

콘솔에서 실행해 보면 ‘내가 먼저’만 출력되고 ‘0초 뒤에 실행됩니다.’는 출력되지 않습니다. setTimeout()에서 지정한 시간이 0초인데 왜 콜백 함수가 실행되지 않은 걸까요?

setTimeout()이 비동기 함수라는 점을 기억해야 합니다. setTimeout()의 콜백 함수보다 아래에 있는 코드가 더 먼저 실행됩니다. 그래서 console.log()clearTimeout()이 먼저 실행되므로 setTimeout()의 콜백 함수는 실행되기 전에 취소됩니다.

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