다음 코드의 결과를 예상해 보세요. setTimeout()의 밀리초가 0입니다. 즉, 바로 실행하라는 뜻입니다.
const timerId = setTimeout(() => {
console.log('0초 뒤에 실행됩니다.');
}, 0);
console.log('내가 먼저');
clearTimeout(timerId);
콘솔에서 실행해 보면 ‘내가 먼저’만 출력되고 ‘0초 뒤에 실행됩니다.’는 출력되지 않습니다. setTimeout()에서 지정한 시간이 0초인데 왜 콜백 함수가 실행되지 않은 걸까요?
setTimeout()이 비동기 함수라는 점을 기억해야 합니다. setTimeout()의 콜백 함수보다 아래에 있는 코드가 더 먼저 실행됩니다. 그래서 console.log()와 clearTimeout()이 먼저 실행되므로 setTimeout()의 콜백 함수는 실행되기 전에 취소됩니다.