Anonyme En Fonction De Rappel Des Précisions
Je suis brossage sur les fonctions de rappel et suis tombé sur le passage suivant de http://javascriptissexy.com/understand-javascript-callback-functions-and-use-them/#
"Quand on passe par un rappel de la fonction comme argument d'une autre fonction, nous ne sommes que de passage de la définition de la fonction. Nous ne sommes pas l'exécution de la fonction dans le paramètre. En d'autres termes, nous ne sommes pas en passant la fonction avec la paire de fuite de l'exécution des parenthèses () comme nous le faisons lorsque nous sommes à l'exécution d'une fonction.
Et puisque la fonction contenante a la fonction de rappel dans son paramètre comme la définition d'une fonction, il peut exécuter la fonction de rappel à tout moment."
Quelqu'un peut-il expliquer cela? Voici deux exemples fournis.
//The item is a callback function
$("#btn_1").click(function() {
alert("Btn 1 Clicked");
});
Voici un autre exemple:
var friends = ["Mike", "Stacy", "Andy", "Rick"];
friends.forEach(function (eachName, index){
console.log(index + 1 + ". " + eachName); //1. Mike, 2. Stacy, 3. Andy, 4. Rick
});
"Notez que la fonction de rappel n'est pas exécutée immédiatement. Il est “rappelé” (d'où le nom) à un point spécifié à l'intérieur de la fonction contenante du corps. Ainsi, même si la première jQuery exemple ressemble à ceci:
//The anonymous function is not being executed there in the parameter.
//The item is a callback function
$("#btn_1").click(function() {
alert("Btn 1 Clicked");
});
la fonction anonyme qui sera appelé plus tard à l'intérieur du corps de la fonction. Même sans un nom, il peut toujours être consulté plus tard via les arguments de l'objet par la fonction contenante."
Pour le premier exemple avec jquery, quels sont-ils dire exactement. Si le #btn_1 élément est cliqué, la fonction anonyme être exécuté? Je suis en supposant qu'elle sera exécutée si le bouton est cliqué, mais le libellé de l'écoulement a été source de confusion?
De même, pour le deuxième exemple, n'ont-ils pas besoin d'appeler la fonction qu'ils ont passé comme un argument bc son anonymat?
OriginalL'auteur djfkdjfkd39939 | 2015-04-29
Vous devez vous connecter pour publier un commentaire.
Dans les deux exemples, vous êtes de passage à une fonction anonyme comme un paramètre.
de jQuery cliquez sur la méthode prend une fonction en tant que premier paramètre. Alors, imaginez que sur la définition de la fonction est: est-ce
Imaginez que les fonctions sont comme les variables, mais ils ont du contenu à l'intérieur qui peut être exécuté avec
()
à la fin.Chaque fois que vous déclarez une fonction nommée, vous pouvez faire des trucs avec elle, conformément à son nom, comme vous le feriez avec des variables. Bien sûr, contrairement aux variables, ils détiennent le code de l'exécutable à l'intérieur, et non pas les valeurs.
Vous ne pouvez pas faire référence à une fonction anonyme, parce que c'est bien... anonyme. SAUF, vous le tenez à l'intérieur de quelque chose qui a un nom, comme un
var
.Et c'est pourquoi vous pouvez passer d'une fonction anonyme comme un paramètre à une fonction, et il peut l'exécuter comme un rappel. Parce que le paramètre 'contient', la fonction anonyme à l'intérieur de celui-ci:
Espère que cela aide à clarifier un peu les choses.
Ouais, exactement. Le
iExecuteYourCallback
fonction serait de ne rien faire. Il serait tout simplement une fonction qui a une autre fonction qui lui est passé, mais ne fait rien avec elle, et meurt aussi vite qu'il a été tapé. L'appel de la fonction de rappel est ce qui appelle la fonction de rappel (callback()
). @FelixKling Haha, merci jolie très bien. (Oh, je pensais que c'était volontaire :p. Merci!)Hmm, eh bien, celui-ci est transmis à la fonction, et la fonction a comme un argument. Mais rien ne se passe avec ce rappel jusqu'à ce que vous exécutez explicitement avec
callback()
. La fonction 'meurt', très rapidement, et rien d'importance est réalisé au sein de la très courte durée de vie.Exactement. Il n'a pas été exécuté, puisque vous êtes juste en passant comme paramètre, mais la fonction ne fait rien avec ce paramètre vous est transmis.
C'est essentiellement le même que si vous avez déclaré une fonction comme
function foo() { console.log('foo'); }
, mais jamais appelerfoo()
. La fonction existe depuis un certain temps, mais il ne fait rien.OriginalL'auteur
Dans les fonctions javascript sont d'abord les membres de la classe, vous pouvez passer une fonction en tant que paramètre et la fonction appelée peut l'accepter comme un argument nommé.
Un exemple simple peut être comme ci-dessous
Démo: Violon
Dans vos exemples, oui, le premier rappel sera exécutée une fois l'élément avec l'id
btn_1
est cliqué.ce qui est le cas
bc
Seriez-vous d'accord avec ce que j'ai dit (c'est à dire suis-je interpréter cela correctement?)...un anonyme, un rappel est exécutée sans avoir besoin d'être explicitement demandé de l'appelé en arrière, tandis qu'un nom de fonction, c'est un argument à une autre fonction doit être appelée explicitement appelé à revenir?
La fonction est appelée avec
callback()
, qu'il soit anonyme ou pas. La fonction qui reçoit le rappel ne se soucient pas du tout de savoir si la fonction est anonyme ou non. Pour info,callbackFunction = function(){alert('x')}
encore crée une fonction anonyme, vous venez d'affecter à une variable.Il est exécuté que lorsque quelqu'un clique sur l'élément. "Nulle part, c'est que d'être appelé explicitement" eh Bien, l'appel se passe quelque part en interne dans le navigateur. Théoriquement. En réalité, jQuery pourrait l'appeler. Vous pouvez regarder le code source.
OriginalL'auteur Arun P Johny