Cet article explique principalement les fermetures et rappels js, les concepts et caractéristiques des fermetures, et analyse les étapes et méthodes d'utilisation avec des exemples
1. Fermetures
La fermeture est une difficulté et une caractéristique du langage Javascript. De nombreuses applications avancées reposent sur la fermeture.
Les fermetures ont trois caractéristiques :
1. Les fonctions imbriquées
2. >
3. Les paramètres et variables ne seront pas recyclés par le mécanisme de récupération de place.
Une fermeture est une fonction qui a accès à une variable dans la portée d'une autre fonction. La manière la plus courante de créer une fermeture est de créer une autre fonction au sein d'une fonction et d'y accéder via une autre fonction locale. variables de cette fonction. L'un des avantages et des inconvénients de l'utilisation des fermetures est que les variables locales peuvent résider en mémoire et que les variables globales peuvent être évitées. Les variables globales sont appelables dans chaque module, ce qui est voué à être désastreux. Par conséquent, il est recommandé d’utiliser des variables locales privées et encapsulées. Une fois la fonction générale exécutée, l'objet actif local est détruit et seule la portée globale est enregistrée dans la mémoire. Mais la situation des fermetures est différente !Exemple 1 :
//Une fermeture est une fonction dont la valeur de retour est une autre fonction. La fonction renvoyée peut être utilisée pour accéder aux parties locales de l'extérieur. la variable externe.function outer(){ var val = 0; return function (){ val += 1; document.write(val + "<br />"); }; } var outObj = outer(); outObj();//1,执行val += 1后,val还在 outObj();//2 outObj = null;//val 被回收 var outObj1 = outer(); outObj1();//1 outObj1();//2
(1) En JavaScript, si un objet n'est plus référencé, alors l'objet sera recyclé par GC < 🎜. >
(2) Si deux objets se référencent l'un l'autre et ne sont plus référencés par un tiers, alors les deux objets qui se référencent l'un l'autre seront également recyclés.Alors, quels sont les avantages d'utiliser des fermetures ? Les avantages de l'utilisation des fermetures sont :
1. Espérer qu'une variable résidera longtemps en mémoire2. 🎜>
3. Existence de membres privés
2. Principe de rappel
fonction : je pars maintenant, je vous préviendrai quand il arrivera." Il s'agit d'un processus asynchrone. Pendant le processus "Je pars" (exécution de la fonction), "vous" pouvez tout faire et "vous avertir" (rappel ) lorsque "arrive" (l'exécution de la fonction est terminée). Le processus suivant
Exemple 1 :function doSomething(callback){ callback(1,2); } function numberAdd(a,b){ document.write(a+b); } doSomething(numberAdd);//3
//Ajoutez la méthode doSomething à la classe Thing, où le modèle d'appel du constructeur est utilisé
function Thing(name){ this.name = name; }
Si vous avez un numéro Pour un tableau, vous souhaitez écrire une méthode publique de tri, mais la méthode de tri (de petit à grand ou de grand à petit) est décidée par la personne qui appelle la méthode de tri. La méthode de tri peut être implémentée à l'aide de rappels. Bien sûr, vous pouvez écrire 2 méthodes, l'une consiste à trier de petit à grand et l'autre à trier de grand à petit. Personnellement, je pense que le rappel consiste à transmettre la décision. donner le pouvoir à l'ingénieur en développement commercial et le laisser décider comment y faire face. Cette idée est similaire à celle avec laquelle nous sommes habituellement en contact. C'est différent et un peu inconnu, mais ce type de réflexion peut être particulièrement bénéfique en mode asynchrone. programmation. Je ne sais pas si ma compréhension est correcte. L'exemple de code suivant est un cas d'utilisation typique de rappels :
Thing.prototype.doSomething = function(callback){ callback(this.name); }; function showName(name){ document.write(name); } var t = new Thing("zhangsan"); t.doSomething(showName);//zhangsan
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!