【发布时间】:2019-04-11 00:42:47
【问题描述】:
在阅读有关电子的书时,我偶然发现了以下代码。
const windows = new Set();
app.on('ready', () => {
createWindow();
});
const createWindow = exports.createWindow = () => {
let newWindow = new BrowserWindow({
show: false
});
newWindow.loadURL(url.format({
pathname: path.join(__dirname, 'index.html'),
protocol: 'file:',
slashes: true
}));
newWindow.once('ready-to-show', () => {
newWindow.show();
});
newWindow.on('closed', () => {
windows.delete(newWindow);
newWindow = null;
});
windows.add(newWindow);
return newWindow;
};
这就是我认为正在发生的事情,变量newWindow 是函数的本地变量。 closed event 是最后发生的事件。因此,当closed event 完成时,函数结束。意味着newWindow 变量不再存在。
根据我目前的理解,我认为在函数结束之前将 newWindow 设置为 null 没有意义。
这样做有什么理由吗?
newWindow.on('closed', () => {
windows.delete(newWindow);
newWindow = null;
});
【问题讨论】:
-
这本质上是对对象的处置,以销毁对象,从而完全释放内存。
-
@abc123 不会在函数结束时自动发生,因为变量的生命周期会消失?
标签: javascript electron