无法将值从函数传递给变量

时间:2016-01-02 18:17:42

标签: javascript function scope callback return

所以,我有一个关于对象的代码

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

由于

1 个答案:

答案 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');
}