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

为啥要有两个setTimeout()?

为啥要有两个setTimeout()?


提问者:miracl 2017-02-23 20:48

个回答

  • leessangbobo
    2017-08-03 20:48:49

    我是这么理解两个setTimeout()的,最外层的那个是用来调用内层的setTimeout,相当于我们在增加一个button来启动这个定时器。因为在<script>中仅仅是定义了函数,并没有调用它,而函数体外的setTimeout语句则是调用了内部的函数,计时开始,我们可以将外部的setTimeout函数的延迟时间加长,来验证我这一观点。如有错误,还请斧正

  • qq_迸发激情_0
    2017-05-27 12:23:18

    不错,说的很好。

  • miracl
    2017-02-23 21:30:45

    我吃过亏,让我自己回答自己的问题吧 . 让自己印象深刻点....  先贴上代码

    图一:

    58aedd2e0001a4cb04900206.jpg

    图二:

    58aedd2f00018ca104390263.jpg

    前后两个代码都可以实现记数功能,图一是放在head标签里, 图二我是放在 底部的body标签. 

    其实理解起来很简单,因为浏览器执行代码是从上到下渲染的.  先说图二吧;放在body标签底部,代码执行到这时找到了id为count 每隔一秒执行startCount()函数 并且value值可以递增;


    图一其实由于浏览器的渲染机制 找不到id为count的元素 此时如果直接执行startCount()函数,最初是执行不了的.

    这个是函数的自己调用自己。

    下面setTimeout(“startCount()”1000)。你可以理解成1000微秒执行函数,执行一下发现还有一个函数可以执行 接着再次执行函数.(相当于一个人一次一秒扔1块钱,你一秒捡一块钱,捡了还有捡,一直捡下去.ps:假如我们都是爱钱的人)

    第一个set函数相当于扔钱的,但是扔了没人计数,需要有人捡才会计数.那么第二函数你可以理解为 捡钱的人的动作.

    个人理解。我觉得图一代码不严谨,