Programing

매개 변수가있는 함수를 매개 변수로 전달 하시겠습니까?

crosscheck 2020. 7. 3. 19:44
반응형

매개 변수가있는 함수를 매개 변수로 전달 하시겠습니까?


매개 변수로 매개 변수가있는 자바 스크립트 함수를 전달할 수 있습니까?

예:

$(edit_link).click( changeViewMode( myvar ) );

"폐쇄"를 사용하십시오.

$(edit_link).click(function(){ return changeViewMode(myvar); });

이렇게하면 매개 변수를 알고있는 익명 임시 함수 래퍼가 만들어져 실제 콜백 구현으로 전달됩니다.


사용하십시오 Function.prototype.bind(). 인용 MDN :

bind()메소드는 호출 될 때 this키워드가 제공된 값으로 설정되고 새 함수가 호출 될 때 제공된 인수 순서에 따라 주어진 인수 시퀀스를 갖는 새 함수를 작성합니다.

IE9 +를 포함한 모든 주요 브라우저에서 지원됩니다.

코드는 다음과 같아야합니다.

$(edit_link).click(changeViewMode.bind(null, myvar));

참고 사항 : 전역 컨텍스트에 있다고 가정합니다 . this변수는 window; 그렇지 않으면 this대신에 사용하십시오 null.


아니요, 그러나 매개 변수없이 하나를 전달할 수 있습니다.

$(edit_link).click(
  function() { changeViewMode(myvar); }
);

따라서 매개 변수없이 익명 함수를 전달하면 해당 함수는 클로저의 변수를 사용하여 매개 변수화 된 함수를 호출합니다.


예, 이렇게 :

$(edit_link).click(function() { changeViewMode(myvar) });

당신은 이것을 할 수 있습니다

var message  = 'Hello World';

var callback = function(){
alert(this)
}.bind(message);

그리고

function activate(callback){
  callback && callback();
}

activate(callback);

또는 콜백에 더 유연한 논리가 포함되어 있으면 객체를 전달할 수 있습니다.

데모


이것은 Ferdinand Beyer의 접근 방식에 따른 예입니다.

function function1()
{
    function2(function () { function3("parameter value"); });
}
function function2(functionToBindOnClick)
{
    $(".myButton").click(functionToBindOnClick);
}
function function3(message) { alert(message); }

이 예제에서 "매개 변수 값"은 함수 랩을 사용하여 function1에서 function3으로 전달됩니다.


또는 es6을 사용하는 경우 화살표 기능을 사용할 수 있어야합니다

$(edit_link).click(() => changeViewMode(myvar));

참고 URL : https://stackoverflow.com/questions/1300242/passing-a-function-with-parameters-as-a-parameter

반응형