2014-11-02 205 views
0

我有一个JavaScript函数,它总是返回'undefined'。请帮忙。函数返回'undefined'

function GetUserInfo() 
{ 
    Parse.Cloud.useMasterKey(); 
    var result; 
    var query = new Parse.Query("UserInfo"); 
    query.equalTo("UserID", "1234"); 
    var run = query.find({ 
    success: function(results) {  
     result = results; 
    }, 
    error: function(error) { 
     result = error; 
    } 
    }); // find  
    return result;   
} 

    var item = GetUserInfo();  // always return 'undefined' 
+0

仔细看看你的函数'GetUserInfo',看看你能否找到它返回任何东西的地方。 (提示:回调中的返回值不是** GetUserInfo的返回值。)如果没有显式的'return'语句,函数的返回值是'未定义的'。 – 2014-11-02 05:18:22

回答

1

如果JavaScript函数没有明确返回值,返回的值将始终为undefined。在这种情况下,您的GetUserInfo()函数没有返回声明。在query.find成功回调中有一个return语句,但它只在回调的范围内返回,并且不会为父函数返回值。

如果query.find是同步的,您可以将results的值分配给在回调函数外创建的变量。但是,如果query.find是异步的,那么在父函数返回值之前,需要等待回调函数运行并返回。

尝试单步执行您的功能,并记录查询结果。这会让你更好地了解你的函数内部发生了什么。

+0

问题的原因不在于回调可能不会返回任何东西,而是'GetUserInfo'函数没有返回任何东西。 – 2014-11-02 05:19:29

+0

这正是我所说的。我会更新以澄清。 :) – 2014-11-02 05:23:14

+0

我相信results.length等于1.语句'GetUserInfo = results;'会返回结果,不是吗? – 2014-11-02 05:47:44