Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当数组元素在javascript中变为null时,它会变成什么样子?_Javascript_Ajax_Arrays - Fatal编程技术网

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

当数组元素在javascript中变为null时,它会变成什么样子?,javascript,ajax,arrays,Javascript,Ajax,Arrays,所以我正在编写一个大型AJAX控件类,我有点好奇 为了便于对话,假设我在初始化时将页面的所有元素添加到数组中 当有人执行一个支持AJAX的链接时,后续的方法将用从AJAX调用接收到的内容替换指定的内容部分 但是,假设当这个AJAX调用完成并替换内容部分中的节点时,以前存储在数组中的节点现在为null或未定义(或者表示死亡的任何节点…(显然不是javascript专家)) 当我再次循环遍历数组中的所有节点时会发生什么?这些元素是否不再存在?或者他们仍然在消耗旧索引的空间,但现在无法访问 这似乎是一

所以我正在编写一个大型AJAX控件类,我有点好奇

为了便于对话,假设我在初始化时将页面的所有元素添加到数组中

当有人执行一个支持AJAX的链接时,后续的方法将用从AJAX调用接收到的内容替换指定的内容部分

但是,假设当这个AJAX调用完成并替换内容部分中的节点时,以前存储在数组中的节点现在为null或未定义(或者表示死亡的任何节点…(显然不是javascript专家))

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

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


谢谢,干杯。

如果从活动页面中删除DOM元素,对它的引用不会变为null。元素将存储在内存中,直到不再存在对元素的引用并且垃圾收集器已收集垃圾为止


这意味着您可以使用DOM节点数组来还原那些从父元素中删除的节点。

如果从活动页面中删除了DOM元素,对它的引用不会变为null。元素将存储在内存中,直到不再存在对元素的引用并且垃圾收集器已收集垃圾为止


这意味着您可以使用DOM节点数组来还原那些从父元素中删除的节点。

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

如果不再将其添加到DOM中,而是将数组中的项设置为其他值,例如null或undefined,假设没有对该元素的剩余引用,则该元素将被垃圾收集,不再占用空间


值得注意的是,javascript数组与
节点列表
HTMLCollection
之间存在差异。您可以通过调用一些DOM方法(如
document.getElementsByTagName
)来获取节点列表。节点列表看起来有点像数组,但仍然是“活动的”,因此如果从DOM中删除节点,它也将从
节点列表中删除。

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

如果不再将其添加到DOM中,而是将数组中的项设置为其他值,例如null或undefined,假设没有对该元素的剩余引用,则该元素将被垃圾收集,不再占用空间


值得注意的是,javascript数组与
节点列表
HTMLCollection
之间存在差异。您可以通过调用一些DOM方法(如
document.getElementsByTagName
)来获取节点列表。节点列表看起来有点像数组,但保持“活动”,因此如果从DOM中删除节点,它也将从
节点列表中删除。

查看代码会很有帮助。替换DOM中的节点和替换数组中的元素是两件不同的事情;但是,为了用最简单的方式进行阐述,希望不必编写一点代码来演示,该数组完全由“修改的”DOM节点组成。查看代码会很有帮助。替换DOM中的节点和替换数组中的元素是两件不同的事情;但是,为了用最简单的方式进行阐述,希望不必编写一点代码来演示,该数组完全由“修改的”DOM节点组成;首先,如果我在数组中将元素设置为null,它在数组中是否仍然是一个“null”元素?也就是说,我是否必须从数组中删除索引?第二;更为琐碎的是,您是否有节点列表实现的好例子?如果您显式地将元素设置为null或undefined,那么它将在数组中保持为null或undefined(尽管您不必担心这会占用太多空间)。要从阵列中删除元素,您需要使用
拼接
,或者如果元素位于起始位置,则可以使用
移位
,或在末端使用
弹出
。您还可以通过只为数组的
.length
属性指定一个较小的值来截断数组。基本上,如果您使用其中一个返回值的方法,您只需要担心
节点列表。如果你这样做了,并且你不期望退货收集是“活的”,那可能会非常令人惊讶。如果您使用的是
getElementsByTagName
,或
.children
.childNodes
属性,您可能会担心这个问题。我相信xpath方法也可以选择返回实时迭代器。有时候,拥有一个实时的集合是你想要的,除了数组很好而且更方便。我相信我最终想要做的是使用一个空的节点列表(绑定到文档?)并填充特定的元素-但是这些元素对特定的属性有严格的要求;所以我觉得创建自己的节点列表是必须的,但也许现在我只需要拼接空元素就可以了。谢谢你的帮助。两个简单的问题;首先,如果我将数组中的元素设置为null,它是否仍然是rem