当节点设置超时回调变为 null 时会发生什么情况



我有一个关于回调的问题。我有一个对象,其中一个函数用作 setTimeout 回调,并且可以在回调触发之前删除该对象。节点会知道在发生超时时不调用它,还是会保留引用并调用它?

做了一些测试,看起来节点保留了对对象的引用并触发了回调。

在"删除"之后,对象不一定被删除,你只是删除了对它的引用。该方法仍将是可调用的。

> cat test.js
var a = {                                                                                                                                                                                          
    method: function() {
        console.log('a' + a.property)   
    },
    property: '1'
}
setTimeout(a.method, 1000);
delete a;
> node test.js                                                                                                                                                                        
a1

最新更新