问答详情
源自:8-5 计时器setTimeout()

为什么函数里面的setTimeout会导致函数不断执行,不是只执行一次嘛

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>计时器</title>

</head>

<script type="text/javascript">

  var num=0;

  function startCount() {

    document.getElementById('count').value=num;

    num=num+1;

    setTimeout("startCount()",1000);

  }

  

</script>

<body>

<form>

<input type="text" id="count"/>

<input type="button" value="go" onClick="startCount()"/>

</form>

</body>

</html>

为什么函数里面的setTimeout会导致函数不断执行,不是只执行一次嘛


提问者:百兽凯多00 2017-02-17 19:25

个回答

  • 慕数据1008917
    2017-02-22 10:33:20
    已采纳

    我是这么理解的 1.函数被调用,所以开始走函数里面的语句 结果显示0 (此时因为num=0)

                               2.函数里面走到语句setTimeout,意思就是过1s之后再调用startCount()

                               3.然后函数再被调用,又开始走函数里面的语句,结果显示 (num+1)的结果。

    然后一直2,3,2,3,2,3,2,3步骤重复


    但是我有个问题。。。为什么我没有写onclick,没有任何最初调用函数的语句,他就可以直接开始计数了???

  • 慕粉1440489053
    2017-03-28 01:14:40

    每1s调用自身一次 不停的递归

  • CodingJWL
    2017-02-17 20:44:59

    因为你的 setTimeout("startCount()",1000);里面调用了startCount(),属于递归调用,因此才不停的被执行。。。

  • 紫辰96
    2017-02-17 20:44:56

    setTimeout("startCount()",1000);//1000ms后再次调用startCount()

  • woniu8hungliniao
    2017-02-17 20:44:30

    buzhidao