+ -
当前位置:首页 → 问答吧 → setTimeout的值是怎么回事啊 ?

setTimeout的值是怎么回事啊 ?

时间:2011-11-06

来源:互联网

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

作者: rao3324180   发布时间: 2011-11-06

应该是毫秒数吧.

作者: qianjin036a   发布时间: 2011-11-06

是一个句柄,而非计数器
不过每次运行之后返回的数一次比一次大,有时候会是连续的。
但是包括w3c的定义也没有说明返回值具体是什么

作者: cj205   发布时间: 2011-11-06

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

作者: cj205   发布时间: 2011-11-06

引用 3 楼 cj205 的回复:

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

作者: rao3324180   发布时间: 2011-11-07

引用 4 楼 rao3324180 的回复:

引用 3 楼 cj205 的回复:

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

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

作者: cj205   发布时间: 2011-11-07

系统中有很多计时器。有系统级的,有应用程序级的,也有脚本级的。

对JS引擎来说,它在处理计时器时所面对的级别范围相对小得多。

每个计时器行为必须要有所区分,才能进行定向管理,比如排程发作与撤消。

对于脚本编写者来说,可以不必管这些,只需要知道SetTimeout/SetInterval这些计时器函数都会这样一个值(的确是以数值作为表现的,至于对象的管理,是在JS引擎内部实现的,这里只是以一个数值作为KEY,理解成类似于数组内的成员INDEX序列号也可以)。

一般时候没必要接收这个返回值,只有在可能需要撤消这个计时器的时候,事先这样接收,然后用clearInterval(句柄值)/clearTimeout(句柄值)来撤消对应的setInterval/setTimeout操作.

作者: theforever   发布时间: 2011-11-07