将setTimeout分配给变量时,该变量的值是什么?

时间:2019-05-27 10:37:47

标签: javascript

我试图知道在调用setTimeout并将其分配给变量时该变量的值是什么。意外的值会被记录下来,所以请好奇这是怎么发生的。

我试图在堆栈上查找一些相关问题,并在网络上进行查找,但未获得确切答案。

更新-我正在寻求帮助,以了解如何计算分配给变量d的唯一ID?

let a = setTimeout( () => {
  console.log('something will happen')
}, 2000)

let b = setTimeout( () => {
  console.log('something will happen')
}, 3000)

let c = setTimeout( () => {
  console.log('something will happen')
}, 4000)

console.log(a, b, c)

3 个答案:

答案 0 :(得分:2)

期望使用哪种类型的值documentation

报价:

  

返回的timeoutID是一个正整数,它标识通过调用setTimeout()创建的计时器。该值可以传递给clearTimeout()来取消超时。

     

了解setTimeout()和setInterval()共享相同的ID池,并且clearTimeout()和clearInterval()在技术上可以互换使用可能会有所帮助。但是,为清楚起见,您应尝试始终将它们匹配,以免在维护代码时造成混淆。

     

保证超时ID永远不会被后续调用同一对象(窗口或工作器)上的setTimeout()或setInterval()所重用。但是,不同的对象使用单独的ID池。

答案 1 :(得分:1)

当您调用setTimeoutsetInterval时,将返回特定计时器的唯一ID。

通常,它只是一个数字,每个新计时器都会增加该数字,并且可以保证永远不会重复使用此数字。

您只能将其用于取消具有相应功能clearIntervalclearTimeout的超时或间隔。

有关返回值here的更多信息。

答案 2 :(得分:-3)

您可以这样声明超时

var timeoutControl = setTimeout( () => {alert()}, 1000);

然后,您可以取消超时,然后使用触发

clearTimeout(timeoutControl);

setInterval使用相同的机制,并带有clearInterval函数。