如何从这个函数返回正确的数据?

function getUserData(name) { var userData = {}; twitter.get('http://api.twitter.com/1/users/lookup.json', {screen_name:name}, function(data) { userData = { name: data[0].screen_name, screenname: data[0].screen_name, id: data[0].id, url: data[0].url, description: data[0].description } }); return userData; } 

我希望能够写下如下内容:

 var userData = getUserData(name); 

并让它返回那个userData对象。

你没有。

AJAX调用是asynchronous的 。 您需要以某种方式使用callback。

 function getUserData(name, cb) { var userData = {}; twitter.get('http://api.twitter.com/1/users/lookup.json', { screen_name: name }, function(data) { userData = { name: data[0].screen_name, screenname: data[0].screen_name, id: data[0].id, url: data[0].url, description: data[0].description } cb(userData); }); } getUserData(name, function(userData) { // do stuff. }); 

如果你使用jQuery 1.5,你可以使用延迟的承诺,这是jQuery Deferred对象。

 function getUserData(name, cb) { var def = new jQuery.Deferred(); twitter.get('http://api.twitter.com/1/users/lookup.json', { screen_name: name }, function(data) { var userData = { name: data[0].screen_name, screenname: data[0].screen_name, id: data[0].id, url: data[0].url, description: data[0].description } def.resolve(userData); }); return def.promise(); } var promise = getUserData(name); promise.done(function(data) { // do stuff. });