【问题标题】:JavaScript Performance – Remove Pseudo DOM ItemsJavaScript 性能——删除伪 DOM 项
【发布时间】:2020-03-20 05:49:36
【问题描述】:

为了计算路径,我在后台创建了多个 SVG 元素,如下所示:

var path = document.createElementNS('http://www.w3.org/2000/svg', 'path');

问题在于,这是在一个循环中发生的,其中创建了不可预见的路径数量。元素不附加到正文中。我的问题是所有这些伪元素会影响性能/内存吗?还是会被垃圾回收?

如果不是,从文档中删除元素的最佳技术是什么?

谢谢!

【问题讨论】:

    标签: javascript performance dom svg memory


    【解决方案1】:

    垃圾收集器收集所有无法再访问的变量,因此您的代码运行在顶层,这意味着变量将附加到window,因此不可垃圾收集,或者您的代码运行在function,在这种情况下,如果内部没有闭包,它们将在 function 结束时被收集,并保留对它们的引用,如下例所示:

    function foo() {
        var path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
        return function() {
            // Do something with path;
        }
    }
    
    var bar = foo();
    

    在这种情况下,path 将与bar 一样长,因为它在内部匿名function 上有一个引用,而在path 上有一个引用。

    【讨论】:

    • 好的,谢谢!它们在一个函数中运行,所以我没有什么好担心的!
    猜你喜欢
    • 2015-02-12
    • 2022-12-31
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 2014-04-28
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多