我正在创建一个函数来删除给定列表的最后一个节点(作为参数输入)。函数本身非常简单,如下所示。
function popBack(list) {
var current = list.head,
previous;
while (current.next) {
previous = current;
current = current.next;
}
// console.log(current);
// console.log(previous.next);
// current = null;
// console.log(current);
// console.log(previous.next);
previous.next = null;
return list;
}
由于列表中的下一个节点被前一个节点引用,因此previous.next和current应指向同一个对象。这让我想到了我的问题。如果我将current
设置为null
,那么previous.next
是否也等于null
?情况似乎并非如此,因为previous.next
仍然引用了current
过去的内容。任何人都可以解释为什么会这样吗?
提前致谢。
答案 0 :(得分:2)
你是对的,previous.next
和current
指向同一个对象。让我们调用该对象O
。也就是说,
previous.next
指向O
。current
指向O
。运行以下代码时,
current = null;
它没有将O
设置为null,它只会更改current
指向的内容。也就是说,在运行current = null;
之后,这是新状态:
previous.next
指向O
。current
指向null
。