2014-10-28 3 views
-1

"updateData"라는 함수 내에서 다른 함수 "process"에 매개 변수로 전달하는 "updateData"라는 JavaScript 함수가 있습니다.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"함수를 process()에서 만든 버튼에 바인딩해야하므로이 작업을 수행하고 있습니다.

이 문제가 발생합니까? 맞습니까?

(지금까지 어떤 문제도 발생하지 않았지만 기능 프로그래밍을 처음 접했을 뿐이므로 문제가 발생하지 않도록하고 싶습니다.)

답변

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); 
} 

또는

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

귀하의 코드가 절대적으로 잘 작동합니다. 무한 루프에 빠지지 않도록하십시오.

관련 문제