我在Node.js中運行JavaScript下面有疑問。未處理的拒絕持有引用
var z = new Image();
function x()
{
var promise = new Promise();
return promise;
}
var promise = x();
promise.then(function(){});
..........
promise.reject(z);
沒有拒絕處理程序添加到由x()返回的承諾。但是,如果我們發送具有響應值z的拒絕,那麼z是否會被垃圾收集,或者由於未處理的拒絕而引用它,它仍然會被保留。但是,當我添加catch/reject處理程序來承諾時,我看到垃圾收集發生在z上。
請澄清爲什麼垃圾收集不會發生在Z,當傳遞給未處理的拒絕。
'z'看起來像是全局文件,因爲它在模塊的頂層被實例化。這意味着它不會被垃圾收集,因爲全球的地方仍然有參考價值。閱讀更多關於垃圾收集[這裏](https://strongloop.com/strongblog/node-js-performance-garbage-collection/) – peteb