JS - clearTimeout 与删除

JS - clearTimeout vs. delete

我正在使用计时器在 1 分钟后调用函数。

var timer = setTimeout(function() {
    console.log("timer trigger");
}, 10000);

clearTimeout(timer);清除定时器并删除定时器; returns false.

为什么 delete 不能使用计时器?

delete timer; 实际上不会做任何事情,因为您只能删除对象属性。 timer 不是对象 属性,因此无法删除。 (从技术上讲,它是 window 对象的 属性,但 Javascript 指定除非您分配 window.timer,否则您不能删除顶级变量)。当删除 returns false 时,表示没有要删除的内容。

您设置的超时是函数参考。这就是需要删除的内容,而不是 setTimeout 返回的整数。只有运行时环境(浏览器)知道如何通过其 id 删除该函数引用,这是从 setTimeout.

返回的内容