Explication détaillée des fermetures en Javascript
Cet article explique en détail la fermeture en Javascript
1. ?
La fermeture est un point difficile dans le langage Javascript. Elle n'est pas facile à comprendre pour les débutants, alors jetons d'abord un coup d'œil à la signification de la fermeture.
Encyclopédie Baidu et explication « officielle » : La soi-disant « fermeture » fait référence à un système qui a de nombreuses variables et les lie Une expression de l'environnement des variables (généralement une fonction), donc ces variables font également partie de cette expression.
Wikipédia : Dans les langages de programmation, les fermetures (également appelées fermetures lexicales ou fermetures de fonctions) sont utilisées dans Une technique d'implémentation de portée lexicale liaison de nom dans des langages dotés de fonctions de première classe.
Cependant, on constate que ces explications officielles ne comprennent pas clairement ce que sont les fermetures. Elles posent seulement des questions : « De quoi parlez-vous ? ».
En fait, une fermeture est simplement une fonction qui peut lire les variables locales définies par et à l'intérieur de la fonction. En Javascript, il n'y a que des sous. -fonctions à l'intérieur de la fonction. Seules les variables locales peuvent être lues, nous pouvons donc également comprendre les fermetures comme des fonctions définies à l'intérieur des fonctions.
2. Variables de fonction
Pour comprendre les fermetures, nous devons d'abord comprendre les variables de la fonction. Ces variables ont leur propre portée. Quelle est la portée ? Maintenant, de manière générale, Le nom utilisé dans un morceau de code de programme n'est pas toujours valide/disponible, et la portée du code qui limite la disponibilité du nom est la portée du nom.
Il existe deux portées de variables , l'une est globale et l'autre est locale, c'est ce que nous appelons variables globales et variable locale .
var a=50;function fun1(){ alert(a); } fun();
Dans le code ci-dessus, a est défini en dehors de la fonction, donc dans L'appel de la variable a dans la fonction peut naturellement lire sa valeur. Nous appelons ici a une variable globale.
function fun2(){ var a=50; } alert(a);
Dans ce code, on définit a à l'intérieur de la fonction, puis quand a est appelé en dehors de la fonction, il signalera une erreur et vous dit "a n'est pas défini", on ne trouve pas a ? Avons-nous défini un ? Bien sûr, cela a été défini ! C'est juste que c'est une variable locale.
3. Comment trouver les variables "cachées" dans la fonction
Lorsque l'on tape le code du clavier, il y a toujours des raisons qui nous obligent à entrer à l'intérieur des variables locales de la fonction, nous devons alors utiliser une méthode pour extraire les variables locales "cachées" dans la fonction.
C'est-à-dire qu'à l'intérieur de la fonction, nous définissons une autre fonction.
function fun3(){ var a=50; function fun4(){ return a; } return fun4(); } //console.log(a); 报错 console.log(fun3());
Dans le code ci-dessus, on définit une variable a dans fun3, pour que l'on définisse une variable a en dehors de la fonction fun3 L'appel de a signalera également une erreur indiquant qu'elle est introuvable. Pour la fonction fun4 à l'intérieur de la fonction fun3, a peut être appelé, car l'externe a est en dehors de la fonction fun4. Inversement, si une variable est définie dans fun4, alors fun3 ne peut pas être appelée. de.
Un autre concept est impliqué ici, celui de la portée de la chaîne, que nous appelons la chaîne de portée. La chaîne de portée signifie que le même nom de variable générera une chaîne de portée. Lors de l'accès au nom de la variable, il saura d'abord si la portée actuelle contient la variable. Sinon, il ira à la portée parent. trouvez-la. Jusqu'à ce que la variable globale soit finalement trouvée, si la variable globale ne parvient pas à trouver la variable, une erreur sera signalée.
Ensuite, si vous souhaitez appeler une variable une fonction extérieure fun3, vous devez définir une autre fonction fun4 à l'intérieur de la fonction fun3. On la laisse renvoyer la variable a qu'elle peut appeler, puis la fonction fun4. le résultat est la variable a, puis nous renvoyons la fonction fun4, puis nous exécutons la fonction fun3, et le résultat est la valeur de la variable a.
Pour faire simple, tant que fun4 est utilisé comme valeur de retour, on peut lire ses variables internes en dehors de fun3.
4. À quoi devez-vous faire attention lorsque vous appelez des variables locales (en utilisant des fermetures) ?
1. Les fermetures entraîneront la sauvegarde des variables de la fonction en mémoire, ce qui consomme beaucoup de mémoire, donc les fermetures ne peuvent pas être abusées, sinon les performances de la page Web seront réduites.
2. Ne modifiez pas la valeur de la variable interne de la fonction parent avec désinvolture.
Enfin, une fermeture est une fonction qui peut lire les variables internes d'autres fonctions. Elle nous permet d'appeler des variables dans la fonction parent en dehors de la fonction parent. Ce n'est en fait pas difficile à comprendre dans ces circonstances. L'important est que dans un code imprévisible, l'application spécifique de la fermeture nécessite toujours que nous la comprenions vraiment avant de pouvoir l'appliquer habilement.
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!

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

Explication détaillée de la méthode de remplacement de la chaîne JavaScript et de la FAQ Cet article explorera deux façons de remplacer les caractères de chaîne dans JavaScript: le code JavaScript interne et le HTML interne pour les pages Web. Remplacer la chaîne dans le code JavaScript Le moyen le plus direct consiste à utiliser la méthode Remplace (): str = str.replace ("trouver", "remplacer"); Cette méthode remplace uniquement la première correspondance. Pour remplacer toutes les correspondances, utilisez une expression régulière et ajoutez le drapeau global G: str = str.replace (/ fi

Ce tutoriel vous montre comment intégrer une API de recherche Google personnalisée dans votre blog ou site Web, offrant une expérience de recherche plus raffinée que les fonctions de recherche de thème WordPress standard. C'est étonnamment facile! Vous pourrez restreindre les recherches à Y

Vous voici donc, prêt à tout savoir sur cette chose appelée Ajax. Mais qu'est-ce que c'est exactement? Le terme Ajax fait référence à un regroupement lâche de technologies utilisées pour créer un contenu Web interactif dynamique. Le terme Ajax, inventé à l'origine par Jesse J

Cette série d'articles a été réécrite à la mi-2017 avec des informations à jour et de nouveaux exemples. Dans cet exemple JSON, nous examinerons comment nous pouvons stocker des valeurs simples dans un fichier à l'aide du format JSON. En utilisant la notation de paire de valeurs clés, nous pouvons stocker n'importe quel type

Améliorez votre présentation de code: 10 surligneurs de syntaxe pour les développeurs Partager des extraits de code sur votre site Web ou votre blog est une pratique courante pour les développeurs. Le choix du bon surligneur de syntaxe peut améliorer considérablement la lisibilité et l'attrait visuel. T

Tirez parti de jQuery pour les dispositions de page Web sans effort: 8 plugins essentiels JQuery simplifie considérablement la mise en page de la page Web. Cet article met en évidence huit puissants plugins jQuery qui rationalisent le processus, particulièrement utile pour la création de sites Web manuels

Cet article présente une sélection organisée de plus de 10 didacticiels sur les cadres JavaScript et JQuery Model-View-Controller (MVC), parfait pour augmenter vos compétences en développement Web au cours de la nouvelle année. Ces tutoriels couvrent une gamme de sujets, de Foundatio

Points de base Ceci dans JavaScript fait généralement référence à un objet qui "possède" la méthode, mais cela dépend de la façon dont la fonction est appelée. Lorsqu'il n'y a pas d'objet actuel, cela fait référence à l'objet global. Dans un navigateur Web, il est représenté par Window. Lorsque vous appelez une fonction, cela maintient l'objet global; mais lors de l'appel d'un constructeur d'objets ou de l'une de ses méthodes, cela fait référence à une instance de l'objet. Vous pouvez modifier le contexte de ceci en utilisant des méthodes telles que Call (), Appliquer () et Bind (). Ces méthodes appellent la fonction en utilisant la valeur et les paramètres donnés. JavaScript est un excellent langage de programmation. Il y a quelques années, cette phrase était
