이것은 초보가 작성한 코드입니다.
setTimeout을 아무리 오래 설정해도 innerHtml은 최종 결과를 직접 표시합니다.
이게 왜
<!DOCTYPE html>
< ;html>인가요? ;
<head>
<meta charset="utf-8">
<title>루키 튜토리얼(runoob.com)</title>
</head>
< body>
문서에 onmousemove 이벤트 핸들러가 추가되어 문서에서 마우스를 움직일 때 임의의 숫자가 표시됩니다.
이벤트 핸들러를 제거하려면 버튼을 클릭하세요.
<button id='demo1'>나를 클릭하세요</button>
<p id="demo">
<script>
document.getElementById("demo1"). ("클릭", myFunction);
var time = 5;
function myFunction() {
document.getElementById("demo").innerHTML = time;
RemoveHandler(time);
}
함수 RemoveHandler(i) {
i--;
document.getElementById("demo").innerHTML = i;
setTimeout(removeHandler(i),1000);
}
</script>
</body>
</html>
setTime()의 콜백 함수는 비동기적으로 실행됩니다. 메인 호출 스택이 지워진 경우에만 작업 대기열에서 호출 스택에 들어가므로 언급한 상황이 발생합니다