为了账号安全,请及时绑定邮箱和手机立即绑定

setTimeout("startCount()",0)与直接调用函数startCount()有什么区别

以本题为例 

var num=0;

  function startCount() {

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

    num=num+1;

    setTimeout("startCount()",1000)

  }

    setTimeout("startCount()",0);//成功执行 相当于直接运行而使用starCount();或者window.onload=starCount();则失败,必须把脚本放到body最后面才可以成功执行,为什么


正在回答

4 回答

刚刚也搞不清楚这个问题,看了前面的回答,理解如下:直接执行函数,有()会立即执行,还没加载完。用window.onload调用startCount,没有()就可以了。而setTimeout("startCount()",0)立即执行的是setTimeout,不是"startCount()"。

1 回复 有任何疑惑可以回复我~

加括号表示直接调用,window.onload=starCount()这句会无视onload事件读到这一行直接执行starCount();此时如果dom没读完就会失败,放到最后面是在前面dom都读完之后再执行的,所以成功,改为window.onload=starCount;这种不带括号的就放前放后都可以了

1 回复 有任何疑惑可以回复我~

window.onload=starCount(),改为window.onload=starCount,原理上两个应该是一样的

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

setTimeout("startCount()",0)与直接调用函数startCount()有什么区别

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信