javascript - 在自身内部传递函数

时间:2014-10-28 06:39:04

标签: javascript

我有一个名为" updateData"的JavaScript函数。我作为参数传递给另一个函数" process"在函数" updateData"本身。

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"到process()中创建的按钮。

这会导致任何问题吗?这是对的吗?

(到目前为止我还没有遇到任何问题。但我是函数式编程的新手,我想确保这样做不会造成任何问题。)

3 个答案:

答案 0 :(得分:2)

这会奏效。这样做的原因是函数只是在编写此函数时定义而不是评估。因此,当您调用此函数时,updateData变量已经具有对函数对象的引用,并且该引用将传递给您在其中定义的对象。

答案 1 :(得分:1)

是的,你可以。函数可以在其定义中引用自身。因为没有它,你将无法进行递归调用。

由于以下代码可以工作:

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

以下代码也可以使用:

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

OR

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

您的代码将完全正常工作。请确保它不会进入无限循环。

答案 2 :(得分:0)

它会起作用。

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

upDateData();

但是如果按钮在同一页面中呈现,那么你可以使用委托来处理它。