4
var paragraphElement = document.createElement('p');

paragraphElement不在 DOM 中。我怎样才能删除它?我知道removeChild如果它在 DOM 中我可以使用。我不倾向于添加paragraphElement到 DOM 然后将其删除。有什么解决办法吗?

谢谢你。

4

2 回答 2

6

如果一个对象不再被引用,它将被标记为垃圾回收。因此,当您离开p有效的上下文并且没有以任何其他方式引用该元素时,垃圾收集将在下次运行时释放内存。垃圾回收如何实现这一点取决于 JavaScript 引擎。

您还可以分配p一个新的非参考值,例如0,或使用p = null。请注意,.removeChild不会从内存中删除子节点,只会从 DOM 中删除子节点,但如果此节点上没有其他引用,则会将其释放以进行垃圾收集。

有关更多信息,请查看MDN:内存管理

于 2012-08-05T15:41:00.377 回答
1

如果它不在 DOM 中,那么您所要做的就是清除对它的任何 JS 引用,垃圾收集器将为您删除它。这本质上与 javascript 对象或 javascript 数组没有什么不同。如果您清除对它的任何引用,垃圾收集器将清除它。

所以,如果你像这样创建它:

var paragraphElement = document.createElement('p');

然后,您所要做的就是摆脱它的明确引用:

var paragraphElement = null;

如果没有对元素的 javascript 引用,垃圾收集器将删除它。

于 2012-08-05T16:51:50.587 回答