var now = 2018;
function calculateAge(yearOfBirth) {
return now - yearOfBirth;
}
var Josh = {
dateOfBirth: 1990,
age: calculateAge(this.dateOfBirth),
}
console.log(Josh.age);
为什么我不能在函数中使用键作为参数?如果我在那里输入正常数字,它就可以正常工作,但我不明白为什么这种方式不行。它与递归或作用域有关吗?
最佳答案
原因是在这个声明中:
var Josh = {
dateOfBirth: 1990,
age: calculateAge(this.dateOfBirth),
}
this
并不引用 Josh
,也不引用将成为 Josh
的对象。这是不可能的,因为当这条语句执行时,这些东西都不存在。
在此语句中,this
指的是该范围内任何其他语句中所指的任何内容。
console.log(this); // <-- same this
var Josh = {
dateOfBirth: 1990,
age: calculateAge(this.dateOfBirth), // <-- same this
}
console.log(this.someProperty); // <-- same this
如果该范围内的 this
没有 1990
的 dateOfBirth
属性,您将不会得到您想要的结果期待着。
如果您想避免重复 1990
值,请将其存储在变量中,并引用该变量:
var dob = 1990;
var Josh = {
dateOfBirth: dob,
age: calculateAge(dob)
};
关于javascript - 在 javascript 中使用 this 关键字将参数传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48479060/