為什么函數里面的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會導致函數不斷執行,不是只執行一次嘛
2017-02-22
我是這么理解的 1.函數被調用,所以開始走函數里面的語句 結果顯示0 (此時因為num=0)
? ? ? ? ? ? ? ? ? ? ? ? ? ?2.函數里面走到語句setTimeout,意思就是過1s之后再調用startCount()
? ? ? ? ? ? ? ? ? ? ? ? ? ?3.然后函數再被調用,又開始走函數里面的語句,結果顯示 (num+1)的結果。
然后一直2,3,2,3,2,3,2,3步驟重復
但是我有個問題。。。為什么我沒有寫onclick,沒有任何最初調用函數的語句,他就可以直接開始計數了???
2017-03-28
每1s調用自身一次 不停的遞歸
2017-02-17
因為你的?setTimeout("startCount()",1000);里面調用了startCount(),屬于遞歸調用,因此才不停的被執行。。。
2017-02-17
setTimeout("startCount()",1000);//1000ms后再次調用startCount()
2017-02-17
buzhidao