Javascript 为什么这段代码返回一个NaN?

Javascript 为什么这段代码返回一个NaN?,javascript,Javascript,功能m(年龄){ d=秒; } 函数第二(){ var k=65——这个年龄; 返回k; } var asd=新的m(20); document.write(asd.d())您需要将传递给构造函数的age参数分配给this.age,以便以后引用this.age时正确引用它。否则,与您的代码一样,age参数被传递,但从未使用,随后被丢弃: 功能m(年龄){ 这个。年龄=年龄; d=秒; } 函数第二(){ var k=65——这个年龄; 返回k; } var asd=新的m(20); docum

功能m(年龄){
d=秒;
}
函数第二(){
var k=65——这个年龄;
返回k;
}
var asd=新的m(20);

document.write(asd.d())
您需要将传递给构造函数的
age
参数分配给
this.age
,以便以后引用
this.age
时正确引用它。否则,与您的代码一样,
age
参数被传递,但从未使用,随后被丢弃:

功能m(年龄){
这个。年龄=年龄;
d=秒;
}
函数第二(){
var k=65——这个年龄;
返回k;
}
var asd=新的m(20);

document.write(asd.d())我知道了,谢谢,但是如果我交换积分,这个。年龄=年龄;这个,d=秒;但这是正确的,为什么?当我在'this.d=second'之后将age参数指定给'this.age'时,在构造函数中哪一行首先运行并不重要,因为不管怎样,构造函数都会在调用
asd.d()
之前完成所有行的运行-查看您的
新m(20)
在代码中是如何高于
asd.d()
。如果在分配给
this.age
之前调用
second
,它确实会导致尝试访问
this.age
评估
未定义的
\
函数m(age){this.d=second;this.age=age;}
我的意思是,看,我调用了second,然后将age参数分配给this.age,但是如果您没有调用second,它也可以工作,正如您所看到的,这里没有括号。函数调用需要括号,如
second()
。您所要做的就是为
这个.d
分配一个
秒的引用
,这样调用
.d()
将调用
秒()
(使用新的调用上下文)