使用document.createElement创建的元素是否保留在内存中?

Goo*_*ine 8 javascript google-chrome-extension

嗨,我正在慢慢制作一个chrome扩展,我需要解析一些包含html实体的数据,我需要解码它.我在这里的答案中看到我可以使用document.createElement它,所以我这样做了:

htmlDecode: function(input) {
    if(/[<>]/.test(input)) { // To avoid creating tags like <script> :s
        return "Invalid Input";
    }
    var e = document.createElement('div');
    e.innerHTML = input;
    return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
}
Run Code Online (Sandbox Code Playgroud)

但是我担心会document.createElement留下元素,因为这个函数在后台脚本上运行,所以它不像经常刷新,并且它每5分钟运行大约35000次.

那么,由document.createElementget获取创建的元素,还是留下来?我的意思是,我不会将它们附加到任何地方,并且它们被分配到局部变量,但我不确定.

Jus*_*lin 6

他们将被垃圾收集。特别是,由于您正在开发 Chrome 扩展程序,V8 往往会非常快速地回收这样的临时文件,因此不必担心。

如果您通常对此感到担心,一个常见的解决方案是简单地保留一个 div 来完成这项工作。

  • 如果您担心性能,创建一个 div 并重新使用它可能会更有效。我不能肯定地说,因为 Chrome 可能足够聪明,可以为您准备好一个 div,以防它确定您经常创建它们。如果您使用 document.createElement 创建一个元素,除非您明确这样做,否则它不会被附加到文档中,因此一旦您的函数返回这里,它就剩下 0 个引用,因为它是函数本地的并且未被引用在其他地方,V8 将立即回收它,IIRC。 (2认同)