2016-01-02 2 views
0

Итак, у меня есть этот код около объектане может передать значение из функции переменных

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

ААББ функция не является переменной. Вам нужно вызвать функцию с помощью(). – brandonscript

+0

@remus Можете ли вы немного рассказать о том, что мне делать? Спасибо – user2860857

+0

Можете ли вы показать определение 'reEditName'? – Barmar

ответ

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

+0

Да, мое 'reEditName' похоже на это. И если я делаю 'console.log (" newName> "+ newName),' внутри 'var aabb = Obj.reEditName (this.name, function (newName) {' и перед 'return newName;' я получаю значение что я должен был. У вас есть проблема? – user2860857

+0

Вы возвращаете обратный вызов? Я забыл эту часть ... –

+0

Я скорректировал решение ответа, чтобы оно соответствовало этому. –

Смежные вопросы