2014-11-02 203 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