JavaScript - 문제 미리보기

문제 702

hard
다음 코드의 실행 결과로 올바른 것은?

console.log("시작");

setTimeout(function() {
    console.log("3초 후 실행");
}, 3000);

setTimeout(function() {
    console.log("1초 후 실행");
}, 1000);

console.log("끝");
A. 시작 → 3초 후 실행 → 1초 후 실행 → 끝
B. 시작 → 끝 → 3초 후 실행 → 1초 후 실행
C. 시작 → 끝 → 1초 후 실행 → 3초 후 실행
D. 시작 → 1초 후 실행 → 3초 후 실행 → 끝

정답: C

이 코드는 JavaScript의 비동기 실행 순서를 보여주는 중요한 예제입니다.

실행 순서:

1) "시작" - 즉시 실행
2) 첫 번째 setTimeout - 3초 후 실행되도록 예약 (즉시 반환)
3) 두 번째 setTimeout - 1초 후 실행되도록 예약 (즉시 반환)
4) "끝" - 즉시 실행
5) 1초 후: "1초 후 실행"
6) 3초 후: "3초 후 실행"

setTimeout은 비동기 함수이므로 코드의 실행을 멈추지 않고, 백그라운드에서 타이머를 설정한 후 즉시 다음 코드로 넘어갑니다. 따라서 동기 코드("시작", "끝")가 먼저 모두 실행되고, 그 후에 설정된 시간에 따라 비동기 콜백들이 실행됩니다.

💡 학습 팁

이 문제를 포함한 JavaScript 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.