Javascript DOM引用变量的工作原理

Javascript DOM引用变量的工作原理,javascript,dom,Javascript,Dom,全部: 我是DOM新手,我有一个关于DOM引用的问题,例如(假设我使用D3.js或jQuery): 当我打印DomeElement时,它仍然在控制台中显示一个对象,即使它已从DOM结构中删除 所以我想知道,为什么这个变量仍然可以访问DOM对象? 如何确定引用是否无效? 谢谢.remove()返回值(类似于javascript中的返回函数)。使用console.log时,会打印此值,但它不再存在于DOM中。HTML元素可以作为javascript(document.createElement)中的

全部:

我是DOM新手,我有一个关于DOM引用的问题,例如(假设我使用D3.js或jQuery):

当我打印DomeElement时,它仍然在控制台中显示一个对象,即使它已从DOM结构中删除

所以我想知道,为什么这个变量仍然可以访问DOM对象?

如何确定引用是否无效?

谢谢

.remove()
返回值(类似于javascript中的
返回
函数)。使用
console.log
时,会打印此值,但它不再存在于DOM中。HTML元素可以作为javascript(
document.createElement
)中的数据节点存在

在这种状态下,它们作为数据存在,但没有添加到任何可见的地方
.remove()
将元素从
主体中剪切出来,并以其数据形式返回,然后
控制台.log
将其打印。

.remove()
返回值(类似于javascript中的
返回
函数)。使用
console.log
时,会打印此值,但它不再存在于DOM中。HTML元素可以作为javascript(
document.createElement
)中的数据节点存在

在这种状态下,它们作为数据存在,但没有添加到任何可见的地方
.remove()
将元素从
主体中剪切出来
并以其数据形式返回,然后
控制台.log
将其打印出来

所以我想知道,为什么这个变量仍然可以访问DOM对象

您在内存中检索了一个对对象的引用,只要您的变量在作用域中,它就会一直保留

你可以改变一个引用了它的对象,但是你不能破坏它(不是在JS中)

如何确定引用是否无效

没有“无效”引用这样的事情。如果您想检查元素是否仍然装载在DOM中,您可以尝试搜索它。如果它在那里-你会找到它,否则你不会找到的

所以我想知道,为什么这个变量仍然可以访问DOM对象

您在内存中检索了一个对对象的引用,只要您的变量在作用域中,它就会一直保留

你可以改变一个引用了它的对象,但是你不能破坏它(不是在JS中)

如何确定引用是否无效


没有“无效”引用这样的事情。如果您想检查元素是否仍然装载在DOM中,您可以尝试搜索它。如果它在那里-你会找到它,否则你不会找到它。

那么,这是否意味着我可以重新加载我以前删除的元素?@Kuan“reload”是什么意思?意味着使用类似append()的东西将它重新链接到DOM结构。@Kuan你确实可以重新添加它。那么,这是否意味着我可以重新加载我以前删除的元素?@Kuan“reload”是什么意思意思是使用append()之类的东西将其重新链接到DOM结构。@Kuan您确实可以将其添加回去。
var domelement = d3.select("div#chart");
d3.select("div#chart").remove();
console.log(domelement);