javascript - 当它在 javascript 中变为 null 时,数组元素会变成什么?

标签 javascript ajax arrays

所以我正在编写一个大型 AJAX 控件类,我遇到了一点好奇。

为了便于交流,假设我在初始化时将页面的所有元素添加到一个数组中。

当有人执行启用 AJAX 的链接时,后续方法会用从 AJAX 调用收到的内容替换指定的内容部分。

然而,假设当此 AJAX 调用完成并替换内容部分内的节点时,先前存储在数组中的节点现在为 null 或未定义(或任何表示已死...(不是 javascript 大师, 清楚地 ))。

当我再次遍历数组中的所有节点时会发生什么?这些元素不再存在了吗?或者它们仍在消耗旧索引的空间,但现在无法访问?

这似乎是一个有点愚蠢的问题,但实际上我只是想看看是否有任何检测和垃圾收集发生在 javascript 数组中的“死”元素上。

谢谢和干杯。

最佳答案

如果你在 javascript 中的数组中有一个 DOM 节点,然后将其从 DOM 中删除(例如,在你的 ajax 调用之后),该节点将继续存在于数组中,并继续占用空间。如果需要,您可以稍后再次将其添加到 DOM。

如果您不再将它添加到 DOM,而是将数组中的项目设置为其他一些值,例如 null 或 undefined,假设没有剩余的对该元素的引用,它将被垃圾收集并且没有更长的空间。

值得牢记的是,javascript 数组与 NodeListHTMLCollection 之间存在差异。您可以通过调用一些 DOM 方法(例如 document.getElementsByTagName)来获取节点列表。 NodeLists 看起来有点像数组,但保持“事件”状态,因此如果从 DOM 中删除一个节点,它也会从 NodeList 中删除。

关于javascript - 当它在 javascript 中变为 null 时,数组元素会变成什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20687383/

相关文章:

javascript - 如何避免空指针异常?

java - 记录在 JButton 数组中选择了哪个数组

javascript - null == 0 在函数中返回 true

javascript - 有效括号 - CodeWars 挑战

javascript - Backbone.js 默认路径(子域)

ajax - jquery .get 在渲染之前完全下载内容

python - Python 中的字符串处理

Javascript将多维数组转换为唯一的项目数组

javascript - 数组是 JavaScript 中对象的特例吗?

javascript - react-native android 中此问题 "Cannot convert argument of type class org.json.JSONArray"的原因是什么?