Javascript 当在站点上加载同一脚本两次时,观察者是否停止从第一个脚本开始观察?

Javascript 当在站点上加载同一脚本两次时,观察者是否停止从第一个脚本开始观察?,javascript,observers,Javascript,Observers,我在一个相当复杂的环境中有以下代码: var cfg = { attributes: true, childList: true, characterData: true }; var observer = new MutationObserver(afunction); observer.observe(e, cfg); 在实现我的一个新想法之前,我需要确保当我重新加载相同的脚本时,observer是否会自动停止观察,这意味着覆盖observer。 它将从被覆盖时停止观察,还是仅在垃圾收集

我在一个相当复杂的环境中有以下代码:

var cfg = { attributes: true, childList: true, characterData: true };

var observer = new MutationObserver(afunction);
observer.observe(e, cfg);
在实现我的一个新想法之前,我需要确保当我重新加载相同的脚本时,
observer
是否会自动停止观察,这意味着覆盖
observer

它将从被覆盖时停止观察,还是仅在垃圾收集器删除它时停止观察?

它将仅在GC删除它时停止观察。Javascript对象和变量不会保留其代码创建的文件的任何内存,因此重新加载该文件不会对先前加载期间创建的对象产生任何影响

您可以进行明确检查:

var observer;
if (observer) { // variable from a previous load of file
    observer.disconnect();
}
observer = new MutationObserver(afunction);

我怀疑它会停止观察。