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

来源:8-5 计时器setTimeout()

SamuleQiu

2016-05-02 18:59

以本题为例 

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回答

  • 慕移动9181930
    2022-03-25 20:20:31
  • ahao430
    2016-05-04 12:20:59

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

  • kuban
    2016-05-03 09:22:10

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

  • 慕盖茨2543353
    2016-05-02 22:38:36

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

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468061 学习 · 21891 问题

查看课程

相似问题