2014-10-28 25 views
-1

我有一個JavaScript函數稱爲「updateData」,我將其作爲參數傳遞給函數「updateData」中的另一個函數「process」。javascript - 傳遞一個函數本身

var updateData = function(){ 
    var bean= { 
    "name" : $("#name").val(), 
    "sort" : $('#sort').val(), 
    "reference" : "sample" 
    }; 
    var param = { 
    'bean' : bean, 
    'reference' : "sample" , 
    'ajaxtype' : 'POST', 
    'url' : 'samp.json', 
    'valFn' : validateData, 
    'updateFn' : updateData, 
    'populateFn' : populateData 
    }; 
    process(param); 
}; 

我這樣做,因爲我需要的功能「了updateData」綁定到()是在過程中創建一個按鈕。

這會導致任何問題嗎?這是對的嗎? (我到目前爲止還沒有遇到任何問題,但是我對函數式編程還不熟悉,並且我想確保這樣做不會導致任何問題)。

回答

2

這將工作。這個工作的原因是函數只是在編寫這個函數的時候被定義和評估的。所以,當你調用這個函數時,updateData變量已經有了對函數對象的引用,並且引用將被傳遞給你在裏面定義的對象。

0

它會工作。

var upDateData = function() { 
    var params = { data : upDateData }; 
    alert(params.data); 
} 

upDateData(); 

但是,然後你可以使用委託來處理,如果按鈕獲取呈現在同一頁面。

1

是的,你可以。一個函數可以在其定義中引用它自己。因爲沒有這些,你將無法進行遞歸調用。

由於下面的代碼可以工作:

var updateData= function() { 
    if(someCondition){ 
     updateData(); 
    } else { 
     return; 
    } 
} 

下面的代碼也將工作:

var updateData= function() { 
    process(updateData); 
} 

OR

var updateData= function() { 
    var param = {'updateFn' : updateData}; 
    process(param); 
} 

您的代碼將工作精絕。只要確保它不會陷入無限循環。

相關問題