매개 변수가있는 함수를 매개 변수로 전달 하시겠습니까?
매개 변수로 매개 변수가있는 자바 스크립트 함수를 전달할 수 있습니까?
예:
$(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
'Programing' 카테고리의 다른 글
TCP / IP 포트를 확보 하시겠습니까? (0) | 2020.07.03 |
---|---|
모든 로그가 시작될 때 로그 백이 자체 상태를 출력하지 못하게하는 방법은 무엇입니까? (0) | 2020.07.03 |
자바 : 정적 클래스? (0) | 2020.07.03 |
반응 기본에서 버튼 비활성화 (0) | 2020.07.03 |
하나의 라이너를 파일 앞에 추가 (0) | 2020.07.03 |