Maison >interface Web >js tutoriel >Résumé du passage d'une fonction en tant que paramètre d'une autre fonction dans JS

Résumé du passage d'une fonction en tant que paramètre d'une autre fonction dans JS

黄舟
黄舟original
2017-03-01 15:11:031145parcourir

Aujourd'hui, lors de l'enregistrement des événements pour les éléments, j'ai rencontré un problème lors de l'utilisation de addEventListener. Il semble que j'ai déjà rencontré ce problème. Je pense qu'il est nécessaire de le résumer. C'est un problème causé par les fonctions JS en tant que paramètres. Regardez d’abord le code suivant. Pensez-vous qu’il y a un problème avec le code suivant ? Est-il possible de faire apparaître id3 après avoir cliqué sur l'élément correspondant à id3 ?

Exemple 1

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

La réponse est non, elle ne peut pas obtenir l'effet que je souhaite, car cette ligne de code ne sera pas utilisé lorsque la page est chargée, id3 apparaîtra. Lorsque je clique sur l'élément correspondant à id3, rien ne se passe sur la page.

J'ai donc modifié le code pour les deux situations suivantes :

Exemple 2

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

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

Exemple 3

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


L'exécution est normale cette fois-ci. Pourquoi ?

Parce que dans le monde JS, curClick('id3') appelle curClick('id3') directement au lieu de le passer en paramètre Si vous souhaitez le passer en paramètre. , si vous n'avez pas besoin de transmettre de paramètres, transmettez simplement le nom de la fonction directement. Si vous devez transmettre des paramètres, il existe deux solutions

Méthode 1 : À l'aide de fonctions anonymes. , la fonction à passer, Placez-la dans une fonction anonyme et utilisez la fonction anonyme comme paramètre comme l'exemple 2

par exemple : use function(){myfunction(val1,val2, ...);} comme transfert de paramètres.

Deuxième : réécrivez la fonction qui doit être passée

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

Ce qui précède est un résumé du passage d'une fonction en tant que paramètre d'une autre fonction dans JS, et plus Pour le contenu associé, veuillez faire attention au site Web PHP chinois (www.php.cn) !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn