


Exemple d'utilisation de la fermeture Javascript Compétences Analysis_Javascript
Cet article analyse le concept et l'utilisation des fermetures Javascript avec des exemples. Partagez-le avec tout le monde pour votre référence. Les détails sont les suivants :
En ce qui concerne les fermetures, tout le monde doit en avoir entendu parler. Voici ma simple compréhension.
Pour être honnête, il n'existe pas beaucoup de scénarios dans lesquels les fermetures sont réellement écrites manuellement dans le travail quotidien, mais les frameworks et composants tiers utilisés dans le projet utilisent plus ou moins les fermetures.
Il est donc essentiel de comprendre les fermetures. Haha...
1. Qu'est-ce que la fermeture
En bref, c'est une fonction qui peut lire les variables internes d'autres fonctions.
En raison des caractéristiques de la portée des variables JS, les variables internes ne sont pas accessibles de l'extérieur, mais les variables externes sont accessibles de l'intérieur.
2. Scénarios d'utilisation
1. Implémentez les membres privés.
2. Protégez l'espace de noms et évitez de polluer les variables globales.
3. Mettre en cache les variables.
Regardons d'abord un exemple d'encapsulation :
//La portée de la variable est à l'intérieur de la fonction et n'est pas accessible de l'extérieur
var nom = "par défaut";
revenir {
getName : function () {
renvoyer le nom ;
},
setName : fonction (nouveauNom) {
nom = nouveauNom;
>
>
}();
console.log(person.name); // Accès direct, le résultat est : undefined
console.log(person.getName()); // Le résultat est : par défaut
console.log(person.setName("langjt"));
console.log(person.getName()); // Le résultat est : langjt
Regardez les fermetures couramment utilisées dans les boucles pour résoudre le problème du référencement de variables externes :
pour (var i=0, len=aLi.length; i
alert(i); // Quel que soit l'élément
};
>
Après avoir utilisé la fermeture :
pour (var i=0, len=aLi.length; i
Fonction de retour() {
alert(i); // Cliquez sur l'élément
>
})(i);
>
3. Précautions
1. Fuite de mémoire
Étant donné que les fermetures entraînent le stockage de toutes les variables de la fonction en mémoire, ce qui consomme beaucoup de mémoire, les fermetures ne peuvent pas être abusées, sinon cela entraînerait des problèmes de performances sur la page Web.
Par exemple :
var oDiv = document.getElementById('J_DIV');
var id = oDiv.id;
oDiv.onclick = function() {
// alert(oDiv.id); Il y a une référence circulaire ici, et oDiv est toujours en mémoire après la fermeture de la page de la version basse d'IE. Mettez donc en cache les types primitifs au lieu des objets autant que possible.
alerte(id);
};
oDiv = nul;
>
2. Dénomination des variables
Si le nom de variable de la fonction interne et le nom de variable de la fonction externe sont les mêmes, alors la fonction interne ne peut plus pointer vers la variable portant le même nom de la fonction externe.
Par exemple :
fonction de retour (num) {
console.log(num);
>
>
var f = nouveau foo(9);
f(); // non défini
其實上面的用法,專業術語叫函數柯里化(Currying),就是把接受多個參數的函數變換成接受一個單一參數(最初函數的第一個參數)的函數,並且返回接受餘下的參數而且傳回結果的新函數的技術。本質上也利用了閉包可以快取的特性,例如:
return function(y) {
return num y;
};
};
var inc = adder(1);
var dec = adder(-1);
//inc, dec現在是兩個新的函數,作用是將傳入的參數值 ( /‐)1
alert(inc(99));//100
alert(dec(101));//100
alert(adder(100)(2));//102
alert(adder(2)(100));//102
再例如阿里玉伯的seaJS源碼中:
* util-lang.js - 最小的語言增強
*/
function isType(type) {
return function(obj) {
return {}.toString.call(obj) == "[object " type "]"
}
}
var isObject = isType("Object");
var isString = isType("String");
希望本文所述對大家的javascript程式設計有所幫助。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

En C++, une fermeture est une expression lambda qui peut accéder à des variables externes. Pour créer une fermeture, capturez la variable externe dans l'expression lambda. Les fermetures offrent des avantages tels que la réutilisabilité, la dissimulation des informations et une évaluation paresseuse. Ils sont utiles dans des situations réelles telles que les gestionnaires d'événements, où la fermeture peut toujours accéder aux variables externes même si elles sont détruites.

Les expressions C++ Lambda prennent en charge les fermetures, qui enregistrent les variables de portée de fonction et les rendent accessibles aux fonctions. La syntaxe est [capture-list](parameters)->return-type{function-body}. capture-list définit les variables à capturer. Vous pouvez utiliser [=] pour capturer toutes les variables locales par valeur, [&] pour capturer toutes les variables locales par référence, ou [variable1, variable2,...] pour capturer des variables spécifiques. Les expressions Lambda ne peuvent accéder qu'aux variables capturées mais ne peuvent pas modifier la valeur d'origine.

Une fermeture est une fonction imbriquée qui peut accéder aux variables dans la portée de la fonction externe. Ses avantages incluent l'encapsulation des données, la conservation de l'état et la flexibilité. Les inconvénients incluent la consommation de mémoire, l’impact sur les performances et la complexité du débogage. De plus, les fermetures peuvent créer des fonctions anonymes et les transmettre à d'autres fonctions sous forme de rappels ou d'arguments.

L'impact des pointeurs de fonction et des fermetures sur les performances de Go est le suivant : Pointeurs de fonction : légèrement plus lents que les appels directs, mais améliorent la lisibilité et la réutilisabilité. Fermetures : généralement plus lentes, mais encapsulent les données et le comportement. Cas pratique : les pointeurs de fonction peuvent optimiser les algorithmes de tri et les fermetures peuvent créer des gestionnaires d'événements, mais ils entraîneront des pertes de performances.

Les fermetures en Java permettent aux fonctions internes d'accéder aux variables de portée externe même si la fonction externe est terminée. Implémentée via des classes internes anonymes, la classe interne contient une référence à la classe externe et maintient les variables externes actives. Les fermetures augmentent la flexibilité du code, mais vous devez être conscient du risque de fuite de mémoire, car les références à des variables externes par des classes internes anonymes maintiennent ces variables en vie.

Oui, la simplicité et la lisibilité du code peuvent être optimisées grâce à des appels et des fermetures enchaînés : les appels en chaîne lient les appels de fonction dans une interface fluide. Les fermetures créent des blocs de code réutilisables et accèdent à des variables en dehors des fonctions.

L'utilisation de requêtes POST en PHP est une opération courante dans le développement de sites Web. Les données peuvent être envoyées au serveur via des requêtes POST, telles que les données de formulaire, les informations utilisateur, etc. Une utilisation appropriée des requêtes POST peut garantir la sécurité et l'exactitude des données. Ce qui suit présente l'utilisation correcte des requêtes POST en PHP et fournit des exemples de code spécifiques. 1. Principes de base des requêtes POST en PHP En PHP, les données soumises via la méthode POST peuvent être obtenues en utilisant la variable globale $_POST. La méthode POST convertit le numéro du formulaire en

Les fonctions anonymes sont concises et anonymes, mais ont une mauvaise lisibilité et des difficultés de débogage ; les fermetures peuvent encapsuler les données et gérer l'état, mais peuvent entraîner une consommation de mémoire et des références circulaires. Cas pratique : Les fonctions anonymes peuvent être utilisées pour des traitements numériques simples, et les fermetures peuvent mettre en œuvre une gestion d'état.
