如何在JavaScript中表示超时?

Gre*_*ida 2 javascript v8 timing internal-representation

当我调用set timeout时,它返回一个数字,例如

> setTimeout(function(){ console.log('done'); },1000);
4431
"done"
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用这个号码来呼叫,clearTimeout()但这个号码在内部代表什么?

Sho*_*og9 6

它代表什么并不重要.它可以是内存中的地址,也可以是数组的索引,也可以是编写解释器+偏移量的程序员的国家ID#.

你不在乎.你最好不在乎.无论它如何与今天相对应,在一个特定的浏览器/ JS环境内部,它明显可能在其他地方显示其他东西.

您需要知道的是,这个数字对应于您的计时器.如果您以后需要对计时器执行某些操作,则需要该编号,以确保安全.当计时器死了,扔掉它,再也不会想到它.


如果您对一些稍微粗略的细节感兴趣,请参阅活动超时列表的规范 - 不要求数字(句柄)在内部表示任何内容,只是它可以用于可靠地识别特定计时器.

如果您对一些非常坚固的细节感兴趣,请下载您喜欢的浏览器的源代码并前往城镇...

  • 另外称为"不透明手柄" (3认同)