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()
将调用秒()
(使用新的调用上下文)