在网站上两次加载相同的脚本时,观察者是否会从第一个脚本开始停止观察?

When loading the same script twice on a site, do observers stop observing from the first script?

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

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);