Javascript 为什么我需要更改'var value=val;`到`this.value=val;`所以我不';“我得不到一个”;“未定义”;错误
我是Javascript新手,我的背景是Java。为什么我需要更改Javascript 为什么我需要更改'var value=val;`到`this.value=val;`所以我不';“我得不到一个”;“未定义”;错误,javascript,Javascript,我是Javascript新手,我的背景是Java。为什么我需要更改var value=val到此值=val所以当我使用console.log(node.value)时不会出现“未定义”错误打印出我推送的值,但无需更改var next={}tothis.next={} var LinkedList = function(e) { var first, last; var Node =function(val) { var value = val; var next = {
var value=val代码>到此值=val代码>所以当我使用console.log(node.value)时不会出现“未定义”错误
打印出我推送的值,但无需更改var next={}
tothis.next={}代码>
var LinkedList = function(e) {
var first, last;
var Node =function(val) {
var value = val;
var next = {};
}
this.push = function(val) {
var node = new Node(val);
if (first == null) {
console.log(node.value);
first = last = node;
}
else {
console.log(node.value);
last.next = node;
last = node;
}
}
}
var list = new LinkedList();
list.push(1);
list.push(2);
list.push(3);
您没有收到错误,您的日志语句只输出未定义的
,因为节点
没有名为值
的属性
这基本上没有任何作用:
var Node = function(val) {
var value = val;
var next = {};
}
您定义了两个局部范围的变量,但是没有任何东西可以访问这些变量。在此函数(){}
文本之外无法访问变量。链接列表的第一个
和最后一个
变量的工作方式相同。尝试console.log(list.first)
,这也是未定义的
如果要在新对象实例(this
)上创建属性value
和next
,则需要使用this.value
和this.next
您没有看到“下一步”
有任何问题的原因是因为您从未输出它,并且您在这里显式地创建了它:
last.next = node;
直到此行,.next
属性才存在
在对象方法(包括其构造函数)中使用“var”关键字会使该变量成为私有变量。尽管您可以通过该对象的其他“priviledge”方法访问它,但您不能在这些方法之外访问它。因此,试图让你不被定义
相反,使用this.name分配变量会使其公开,这意味着尝试从对象外部访问它
我发现这篇文章在这方面很有帮助 var值
可能应该是this.value
“Get undefined error”确切位置在哪里?另外,您的var Node=function..
实际上什么也不做。除非你使用这个,否则它是毫无意义的。
。我想你会遇到麻烦,因为它与节点
有冲突,这是一个本机函数。谢谢你的帮助,@deceze。谢谢你的帮助,@Cameron McCluskie