Heim >Web-Frontend >js-Tutorial >Zusammenfassung der Übergabe einer Funktion als Parameter einer anderen Funktion in JS

Zusammenfassung der Übergabe einer Funktion als Parameter einer anderen Funktion in JS

黄舟
黄舟Original
2017-03-01 15:11:031146Durchsuche

Heute bin ich beim Registrieren von Ereignissen für Elemente auf ein Problem bei der Verwendung von addEventListener gestoßen. Ich halte es für notwendig, es zusammenzufassen. Es handelt sich um ein Problem, das durch JS-Funktionen als Parameter verursacht wird. Schauen Sie sich zunächst den folgenden Code an. Glauben Sie, dass mit dem folgenden Code etwas nicht stimmt? Ist es möglich, ID3 aufzurufen, nachdem ich auf das Element geklickt habe, das ID3 entspricht?

Beispiel 1

var obj3=document.getElementById('id3');
obj3.addEventListener('click',curClick('id1'),true);
function curClick(id){
		alert(id);
}

Die Antwort ist nein, es kann nicht den gewünschten Effekt erzielen, da diese Codezeile dies nicht tun wird Wird verwendet, wenn die Seite geladen wird. id3 wird angezeigt. Wenn ich auf das Element klicke, das id3 entspricht, passiert auf der Seite nichts.

Also habe ich den Code auf die folgenden zwei Situationen geändert:

Beispiel 2

var obj3=document.getElementById('id3');
	obj3.addEventListener('click',function(e){curClick('id3');stopPropagation(e)},true);

	function curClick(id){
		alert(id);
	}

Beispiel 3

var obj1=document.getElementById('id1'); 
obj1.addEventListener('click',curClick1,true);
function curClick1(){
  alert('okey');
}


Die Ausführung ist dieses Mal normal. Warum ist das so?

Denn in der JS-Welt ruft curClick('id3') curClick('id3') direkt auf, anstatt es als Parameter zu übergeben , wenn Sie keine Parameter übergeben müssen, übergeben Sie einfach den Funktionsnamen direkt. Wenn Sie Parameter übergeben müssen, gibt es zwei Lösungen

Methode 1: Mit Hilfe anonymer Funktionen , die zu übergebende Funktion, platzieren Sie sie in einer anonymen Funktion und verwenden Sie die anonyme Funktion als Parameter wie Beispiel 2

zB: use function(){myfunction(val1,val2, ...);} als Parameterübergabe.

Zweitens: Schreiben Sie die Funktion neu, die übergeben werden muss

function curClick1(val){
<span style="white-space:pre">	</span>return function(){
		alert(val);
	};
}

Das Obige ist eine Zusammenfassung der Übergabe einer Funktion als Parameter einer anderen Funktion in JS und mehr Für verwandte Inhalte achten Sie bitte auf die chinesische PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn