所以,我有一个关于对象的代码
Obj.prototype.save = function (fn){
var aabb = Obj.reEditName(this.name, function(newName) {
return newName;
// I also try the following
var foo = newName;
return foo;
});
console.log("aabb is : "+aabb);
}
Obj.reEditName = function(name, fn){
var name ? name : "TestingName";
nameEditor(name,function(err, finalName) {
return fn(finalName);
});
}
Obj.reEditName
工作正常,我可以从newName
得到一个值。
但是console.log("aabb is : "+aabb);
给出了未定义的。
我不明白为什么。我得到一个值,然后我将其返回,aabb
想要抓住它。为什么这不起作用?我如何将newName
传递回aabb
?
由于
答案 0 :(得分:0)
你得到未定义的唯一原因是因为,newName未定义... 我们来看看您的代码。
Obj.prototype.save = function (fn){
//I suppose here you are assigning aabb the result of reEditName.
//because you are calling it...
var aabb = Obj.reEditName(this.name, function(newName) {
//you have a callback as a second parameter, and this callback recevied an argument (newName)...
return newName;
// I also try the following
var foo = newName;
return foo;
});
console.log("aabb is : "+aabb);
}

这里的问题是,当您调用reEditName方法的回调时,没有接收到newName参数,或者由于其他原因接收到未定义。
可能的解决方案:
Obj.reEditName = function(name, callback) {
//you should call that callback with an argument, and return it...
return callback('New name');
}