Javascript 嵌套函数:调用时输出“未定义”的函数
我制作了一个箭头函数,如下所示,嵌套在Javascript 嵌套函数:调用时输出“未定义”的函数,javascript,Javascript,我制作了一个箭头函数,如下所示,嵌套在getdata函数中,当我调用getdata函数时,它输出undefined,我做错了什么 let person={ 姓名:“马里奥”, 年龄:30,, 工资:5555, getdata:函数(){ 欢迎=()=>{ return`hello:${this.name}您的年龄是${this.salary}` }; }, } console.log(person.getdata())我想你是有意这么做的 let person = { name: &q
getdata
函数中,当我调用getdata
函数时,它输出undefined
,我做错了什么
let person={
姓名:“马里奥”,
年龄:30,,
工资:5555,
getdata:函数(){
欢迎=()=>{
return`hello:${this.name}您的年龄是${this.salary}`
};
},
}
console.log(person.getdata())
我想你是有意这么做的
let person = {
name: "Mario",
age: 30,
salary: 5555,
getdata: () => {
return `hello: ${this.name} your age is ${this.salary}`
};
}
这将返回所需的结果:
person.getdata().welcome()
由于getData()
只是一个定义了另一个函数但不返回任何内容的函数,因此调用它的返回值是undefined
。但是,如果删除嵌套函数,只返回所需的数据,则会得到一个返回值:
let person={
姓名:“马里奥”,
年龄:30,,
工资:5555,
getdata:函数(){
return`hello:${this.name}您的年龄是${this.salary}`
},
}
console.log(person.getdata())代码>不能在静态对象中传递上下文,
解决问题的最佳模式是使用js类:
班级人员{
建造师(数据){
this.info=数据;
}
欢迎{
return`hello:${this.info.name}您的年龄是${this.info.age}`
}
getSalary(){
返回此.info.salary;
}
getAge(){
返回此.info.age;
}
}
var mario={
姓名:“马里奥”,
年龄:30,,
工资:5555,
}
var数据=新人(马里奥);
log(data.welcome());
log(data.getSalary());
console.log(data.getAge())代码>这是因为getdata()
没有返回任何内容。它只有一个嵌套函数。如果您只想返回welcome的内容,那么这就是您要放置的内容
let person = {
name: "Mario",
age: 30,
salary: 5555,
getdata: function () {
return `hello: ${this.name} your age is ${this.salary}`
}
}
问题是getdata函数不返回任何内容。
您需要创建一个对象person,该对象具有属性getdata,该函数返回一个嵌套对象,该嵌套对象还具有属性welcome,该属性是一个返回字符串的函数
我认为你正在努力实现以下目标:
let person = {
name: "Mario",
age: 30,
salary: 5555,
getdata: function () {
return {
welcome: () => `hello: ${this.name} your age is ${this.salary}`
}
}
}
因此,您可以:
console.log(person.getdata().welcome()) //"hello: Mario your age is 5555"
您不会从该函数返回任何内容,因此它当然会给您未定义。您不会在getdata
中直接返回任何内容,唯一的返回是在设置为welcome
的箭头函数表达式中,它不是getdata
的返回。在我看来,您似乎想要从函数返回函数。所以你可以使用这种方法。或者,您可以直接返回getdata(),如其他答案中所示,但我正在练习嵌套函数,所以我尝试用这种方式显示句子
console.log(person.getdata().welcome()) //"hello: Mario your age is 5555"