


Analyse des occasions et des avantages et inconvénients des compétences js close_javascript
D'abord le code :
//函数a function a() { var i=0; //函数b function b() { alert(++i); } return b; } //函数c var c = a(); c();
Fonctionnalités du code :
1. La fonction b est imbriquée dans la fonction a
2. La fonction a renvoie la fonction b.
Lorsque la fonction interne b de la fonction a dans le code est référencée par une variable c extérieure à la fonction a, cela s'appelle créer une fermeture. Parfois, la fonction b peut également être renvoyée par une fonction anonyme, c'est-à-dire return function(){};
Avantages : 1. Protéger la sécurité des variables au sein de la fonction et améliorer l'encapsulation 2. Conserver une variable en mémoire (en utiliser trop deviendra un inconvénient et occupera de la mémoire)
La raison pour laquelle les fermetures occupent des ressources est que lorsque la fonction a se termine, la variable i ne sera pas détruite car la fonction a se termine, car l'exécution de b dépend des variables de a.
Ne convient pas au scénario : la fonction qui renvoie la fermeture est une très grande fonction
Le cadre typique de fermeture devrait être jquery.
Les fermetures sont une fonctionnalité majeure du langage JavaScript. Les principales utilisations des fermetures sont la conception de méthodes et de variables privées.
Ceci est plus évident lors de la création d'un framework. Certaines méthodes et attributs ne sont utilisés que dans le processus logique d'opération. Vous ne souhaitez pas autoriser la modification externe de ces attributs, vous pouvez donc concevoir une fermeture pour fournir uniquement un accès aux méthodes.
L'inconvénient des fermetures est qu'elles résident en mémoire, ce qui augmentera l'utilisation de la mémoire. Une mauvaise utilisation peut facilement provoquer des fuites de mémoire.
Pour résumer :
Avantages :
1. Continuité logique. Lorsque la fermeture est utilisée comme paramètre d'un autre appel de fonction, elle vous empêche de rompre avec la logique actuelle et d'écrire une logique supplémentaire séparément.
2. Faciliter l'appel des variables locales du contexte.
3. Renforcer l'encapsulation. Une extension du point 2 peut protéger les variables.
Inconvénients :
Les fermetures ont un problème très grave, qui est le problème du gaspillage de mémoire. Ce gaspillage de mémoire n'est pas seulement dû au fait qu'il réside en mémoire, mais plus important encore, une mauvaise utilisation des fermetures entraînera la génération de mémoire invalide. :
var array = []; function abc() { var foo = function(){ } array.push(foo); return foo; } for(var i = 0 ; i < 10000; i ++) { abc(); } alert(array[0] == array[1]);
Grâce au test ci-dessus, nous verrons que les adresses d'une même fermeture logique générées par l'exécution de abc() dix mille fois ne sont pas les mêmes, ce qui signifie qu'elle produit un tas d'objets Function identiques, donc il y a L'avantage est que vous pouvez utiliser le mode usine pour générer des fonctions à utiliser. Cependant, si vous utilisez accidentellement des fermetures comme logique normale, des déchets de mémoire seront inévitablement provoqués. Cela peut être plus facile à comprendre si vous changez la syntaxe :
var foo = new Function();
Donc, en ce qui concerne les fermetures, en ce qui concerne mes propres habitudes, je ne les utilise pas si je peux. S'ils doivent être utilisés, alors trouvez un moyen de garder le nombre d'objets de fermeture petit ou même unique.
Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.

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

La technologie de détection et de reconnaissance des visages est déjà une technologie relativement mature et largement utilisée. Actuellement, le langage d'application Internet le plus utilisé est JS. La mise en œuvre de la détection et de la reconnaissance faciale sur le front-end Web présente des avantages et des inconvénients par rapport à la reconnaissance faciale back-end. Les avantages incluent la réduction de l'interaction réseau et de la reconnaissance en temps réel, ce qui réduit considérablement le temps d'attente des utilisateurs et améliore l'expérience utilisateur. Les inconvénients sont les suivants : il est limité par la taille du modèle et la précision est également limitée ; Comment utiliser js pour implémenter la détection de visage sur le web ? Afin de mettre en œuvre la reconnaissance faciale sur le Web, vous devez être familier avec les langages et technologies de programmation associés, tels que JavaScript, HTML, CSS, WebRTC, etc. Dans le même temps, vous devez également maîtriser les technologies pertinentes de vision par ordinateur et d’intelligence artificielle. Il convient de noter qu'en raison de la conception du côté Web

À l'ère de l'information d'aujourd'hui, les ordinateurs personnels jouent un rôle important en tant qu'outil indispensable dans notre vie quotidienne. En tant que logiciel de base des ordinateurs, le système d'exploitation affecte notre expérience d'utilisation et notre efficacité au travail. Sur le marché, le système d'exploitation Windows de Microsoft a toujours occupé une position dominante, mais les gens sont désormais confrontés au choix entre le dernier Windows 11 et l'ancien Windows 10. Pour les consommateurs ordinaires, lorsqu'ils choisissent un système d'exploitation, ils ne regardent pas seulement le numéro de version, mais comprennent également ses avantages et ses inconvénients.

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.

Modèles : avantages et inconvénients Le modèle est une technique de programmation puissante qui vous permet de créer des blocs de code réutilisables. Il présente de nombreux avantages, mais aussi certains inconvénients. Avantages : Réutilisabilité du code : les modèles vous permettent de créer du code commun qui peut être réutilisé dans toute votre application, réduisant ainsi les efforts de duplication et de maintenance. Cohérence : les modèles garantissent que les extraits de code sont implémentés de la même manière à différents endroits, améliorant ainsi la cohérence et la lisibilité du code. Maintenabilité : les modifications apportées à un modèle sont reflétées simultanément dans tout le code qui l'utilise, simplifiant ainsi la maintenance et les mises à jour. Efficacité : la création de modèles permet d'économiser du temps et des efforts, car vous n'avez pas besoin d'écrire le même code encore et encore. Flexibilité : les modèles vous permettent de créer des blocs de code configurables qui peuvent être facilement adaptés aux différents besoins des applications. défaut

JavaServlet est une classe Java utilisée pour créer des pages Web dynamiques et sert de pont entre le client et le serveur. Principe de fonctionnement : recevoir des requêtes, initialiser le Servlet, traiter les requêtes, générer des réponses et fermer le Servlet. Avantages : Portable, évolutif, sécurisé et facile à utiliser. Inconvénients : surcharge, couplage et gestion de l'état. Cas pratique : Créez un Servlet simple pour afficher le message "Bonjour, Servlet !"

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.

Le choix du framework PHP dépend des besoins du projet et des compétences du développeur : Laravel : riche en fonctionnalités et en communauté active, mais a une courbe d'apprentissage abrupte et des frais généraux élevés en termes de performances. CodeIgniter : léger et facile à étendre, mais a des fonctionnalités limitées et moins de documentation. Symfony : Communauté modulaire et forte, mais problèmes de performances complexes. ZendFramework : de niveau entreprise, stable et fiable, mais volumineux et coûteux en licence. Slim : micro-framework, rapide, mais avec des fonctionnalités limitées et une courbe d'apprentissage abrupte.
