timer = setTimeout(function(){
obj.runScroll()
},10)
这里的timer的值是12055
是不是就是说setTimeout被执行了12055次?

解决方案 »

  1.   

    这个句柄不是一个数值,而是一个对象
    可能valueOf或者toString是一个数字。
      

  2.   

    嗯。所以我也不知道怎么回事,因为连用typeof\constructor都是number。
    但是我查了下w3c的文档,也没提到。
      

  3.   

    系统中有很多计时器。有系统级的,有应用程序级的,也有脚本级的。对JS引擎来说,它在处理计时器时所面对的级别范围相对小得多。每个计时器行为必须要有所区分,才能进行定向管理,比如排程发作与撤消。对于脚本编写者来说,可以不必管这些,只需要知道SetTimeout/SetInterval这些计时器函数都会这样一个值(的确是以数值作为表现的,至于对象的管理,是在JS引擎内部实现的,这里只是以一个数值作为KEY,理解成类似于数组内的成员INDEX序列号也可以)。一般时候没必要接收这个返回值,只有在可能需要撤消这个计时器的时候,事先这样接收,然后用clearInterval(句柄值)/clearTimeout(句柄值)来撤消对应的setInterval/setTimeout操作.