JavaScript超时对象到底是什么?

Amb*_*pel 0 javascript javascript-events settimeout

这是一些示例代码的链接。

http://jsfiddle.net/4djNt/2/

在开始测试之前,我假设a的返回值setTimeout()将是某种浏览器对象。

实际上,这似乎是一个简单的整数。我还相信,将的返回值分配给setTimeout全局变量将意味着只能有一个这样的对象。但是,如您所见,如果您多次单击“启动计时器”按钮,则可以同时运行多个计时器。

例如

  • 我点击开始按钮
  • 脚本创建超时
  • timeout 1,由于五秒钟内起火
  • 一秒钟后,我再次单击,现在有一个 timeout 2
  • 现在我timeout 1要在四秒钟和timeout 2五秒钟之内开火
  • 我单击停止按钮,只有timeout 2清除

可以通过始终在设置之前清除当前超时变量来解决用户单击创建多个计时器的问题。但是我真的很想了解Javascript在这里实际上在做什么。

zzz*_*Bov 5

setTimeoutsetInterval返回一个数字。该数字是id计时器的。活动计时器可以使用clearTimeoutclearInterval分别停止。

如果您丢失了计时器的ID,则必须再次猜测它,或者等待它完成(假设它是超时的)。

如果未在delay参数中指定的毫秒数内取消计时器,它将在全局上下文中执行回调函数。