gpt4 book ai didi

javascript - 如何完全删除临时元素?

转载 作者:行者123 更新时间:2023-11-30 12:55:50 25 4
gpt4 key购买 nike

我正在一个函数中动态添加一个“div”节点,它只是暂时需要的。我已经使用 .removeChild 将其分离然后将其设置为 null,但我很想知道当函数超出范围时在函数中创建的未附加节点会发生什么情况?

如果节点保留在内存中但未附加:

  • A) 设置为 null 是否有必要,或者它会在返回时自动消失吗?
    • 如果是这样,设置为 null 是否正确?
  • B) 需要对其属性做些什么吗? (比如node.style.position)
  • C) 如果它包含额外的子节点,它们是否需要单独处理,或者当它们未连接的父节点设置为空时它们会消失吗?
  • D) 可以使用什么工具来查看这些类型的独立资源?

这是一个用于讨论的示例函数:

    function dpi(){
var res={},
div=document.createElement("div"),
body=document.getElementsByTagName('body')[0];
div.style.position="absolute";
div.style.width="1in";
div.style.height="1in";
div.style.left="-100%";
div.style.top="-100%";
body.appendChild(div);
res["xdpi"]=div.offsetWidth;
res["ydpi"]=div.offsetHeight;
body.removeChild(div);
div=null;
return res;
}

最佳答案

JavaScript 使用自动内存管理。也就是说,它使用垃圾收集器,其中任何未引用的内容都将自动释放。回答您的具体问题:

  1. 不,没有必要将它显式设置为 null - 当您返回时它会消失。
  2. 没有;这些应该自动处理。
  3. 没有; children 也应该自动得到照顾。
  4. 也许是某种垃圾收集器调试器。

我应该注意一些旧的浏览器有垃圾收集器的引用计数实现,如果你有循环(一个元素指向其他指向元素的东西,这通常发生在事件监听器中),它们可能不会被收集并且您必须明确地中断引用,但是今天的大多数浏览器都更加智能。

关于javascript - 如何完全删除临时元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19149524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com