关于setTimeout()的疑惑,请看下面官方给的代码!


<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
 var num=0,i;
 function timedCount(){
    document.getElementById('txt').value=num;
    num=num+1;
    i=setTimeout(timedCount,1000);
  }
    setTimeout(timedCount,1000);
  function stopCount(){
    clearTimeout(i);
  }
</script>
</head>
<body>
 <form>
   <input type="text" id="txt">
   <input type="button" value="Stop" onClick="stopCount()">
 </form>
</body>
</html>

setTimeout()这个方法不是延迟函数表达式的执行吗,我知道timeCount()函数的外部用  setTimeout(timedCount,1000);是让timeCount()这个函数1秒后执行,但是并没有看出这个函数怎么就让num循环叠加了,是因为内部引用了    i=setTimeout(timedCount,1000);吗。但这个又是给计数停止提供参数i啊,怎么回事啊!num是是怎么循环起的啊?

慕村5492868
浏览 1418回答 1
1回答

qq_安安_17

var num=0,i; function timedCount(){     document.getElementById('txt').value=num;     num=num+1;     /*num每次+1*/     i=setTimeout(timedCount,1000);    /*这里运用递归,实现循环1秒执行一次*/ } setTimeout(timedCount,1000);    /*调用定义的timedCount()函数,延迟1秒执行*/ function stopCount(){     clearTimeout(i);    /*停止计时*/ }你可以专门看递归,函数不断的调用函数本身,实现循环,在其他语言也常见的~~
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript