JavaScript 中的突变?



在下面的代码中size2()方法工作正常。但是在size1()中,它正在改变对象并使其为空。为什么这种行为在size2()中没有发生?

class Node {
constructor(data, next = null) {
this.data = data;
this.next = next;
}
}
class LinkedList {
constructor() {
this.head = null;
}
insert(data) {
this.head = new Node(data, this.head);
}
size1() {
var counter = 0;
while (this.head) {
counter++;
this.head = this.head.next;
}
return counter;
}
size2() {
var counter = 0;
var node = this.head;
while (node) {
counter++;
node = node.next;
}
return counter;
}
}
var list = new LinkedList();
list.insert(35);
console.log(list);
console.log(list.size2());

对我来说,这两种方法看起来都一样。这些方法有什么细微的区别吗?

size2()中,你没有改变this.head,因为你首先在局部变量中复制引用。由于在while循环中,您正在改变从这里开始的局部node = node.nextnode并且this.head不再链接。这是永恒的价值/参考陷阱

这是一篇相关文章。

相关内容

  • 没有找到相关文章

最新更新