如果我删除指向该节点的指针,JavaScript会自动删除该节点吗?

时间:2019-07-06 20:48:47

标签: javascript garbage-collection singly-linked-list

我已经对JavaScript中的单链接列表进行了简单的实现,这是我自己的练习。我打算从列表中“删除”给定节点的功能当前只是删除对该节点的引用。我的问题是JavaScript的自动垃圾收集会处理Node(为我删除它),还是我需要做其他事情以确保它不在内存中的某个地方漂浮?

我不知道如何检查Node对象是否仍然存在,因此我尝试仅使用delete,但是我想返回已删除的Node,但我不知道该怎么做如果我使用delete。我还应该注意,我目前未删除指向下一个节点的已删除Nodes指针,因此,除非已删除Node恰好位于列表的末尾,否则它将具有非空指针值。

功能如下:

LinkedList.prototype.RemoveListNode = function(List, PreviousNode, RemovalNode) {
    //if PreviousNode != null, set previous node's pointer to the node after the node to be removed,
    if(PreviousNode) {
        PreviousNode.pointer = RemovalNode.pointer;
    } else {
        //if node to be removed is the head of the list, make the next node the new head
        List.head = List.GetNextListNode(List, RemovalNode);
    }

    //return the removed node
    return RemoveNode;
}

这里是我的Node对象:

function Node(value, pointer) {
    this.value = value;
    this.pointer = pointer;
}

一切似乎都正常运行,但是如果我担心如果未真正删除已删除的节点,可能会遇到很大列表的内存问题。

0 个答案:

没有答案