垃圾收集器如何知道不回收回调?

How does the garbage collector know not to reclaim a callback?

setTimeout(function () {
    alert('Hello');
}, 1000);

鉴于 setTimeout 已完成执行,垃圾收集器如何知道不收集回调函数?回调函数的引用肯定已经没有了吧?

垃圾收集器确定哪些对象可以从局部和全局变量和数据结构中访问,并且这些对象不是垃圾。在超时函数的情况下,它们可以从事件队列访问,事件队列是 Javascript 实现内部的全局数据结构。