2016-06-09 47 views
0

當我搜索這些內容時,我發現很多東西開始討論Ajax,所以我甚至不知道我在嘗試什麼。在回調函數中使用表達式中的變量

我有以下的JavaScript:

function getFruit(callback) { 
    var result; 

    result = "banana"; 

    // Make sure the callback is a function​ 
    if (typeof callback === "function") { 
    // Call it, since we have confirmed it is callable​ 
     callback(); 
    } 

    return result; 
} 

getFruit(function(){ 
    console.log(getFruit()); 
} 

我只是想結果的當前值傳遞給回調函數,以便它可以在那裏使用。

請指教。

回答

3

您需要將result作爲參數傳遞給callback函數。

function getFruit(callback) { 
 
    var result = "banana"; 
 

 
    if (typeof callback === "function") { 
 
    callback(result); 
 
    } 
 
} 
 

 
getFruit(function(parameter) { 
 
    console.log(parameter); 
 
})

+0

爲什麼需要該語句返回的結果? –

+0

@RahulArora,這不是必需的,因爲它是OP代碼的一部分,因此將其留下(現在刪除) – Satpal

0

一種方法是把它作爲回調參數:

function getFruit(callback) { 
 
    var result; 
 

 
    result = "banana"; 
 

 
    // Make sure the callback is a function​ 
 
    if (typeof callback === "function") { 
 
    // Call it, since we have confirmed it is callable​ 
 
     callback(result); 
 
    } 
 

 
    return result; 
 
} 
 

 
getFruit(function(result){ 
 
    alert(result); 
 
});


其他方式(因爲它不是異步函數)是創建全局變量勒比使用它:

var result; 
 

 
function getFruit(callback) { 
 
    result = "banana"; 
 

 
    // Make sure the callback is a function​ 
 
    if (typeof callback === "function") { 
 
    // Call it, since we have confirmed it is callable​ 
 
     callback(); 
 
    } 
 
} 
 

 
getFruit(function(){ 
 
    alert(result); 
 
});

+0

僅僅因爲這個函數是同步的並不是創建帶有副作用函數的藉口。 – ste2425

+0

返回結果在您的第​​一種情況下不需要 –

+0

謝謝您使用替代方法。 –

0

你可以做這樣的事情:

function getFruit(callback) { 
    var result; 

    result = "banana"; 

    // Make sure the callback is a function​ 
    if (typeof callback === "function") { 
    // Call it, since we have confirmed it is callable​ 
     callback(result); 
    } 


} 

getFruit(function(response){ 
    console.log(response); 
}) 
+0

感謝您在這個問題上的幫助。 –

相關問題