Maison interface Web js tutoriel Explication détaillée des fermetures en Javascript

Explication détaillée des fermetures en Javascript

Mar 12, 2017 am 11:22 AM

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();
Copier après la connexion


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);
Copier après la connexion


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());
Copier après la connexion


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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Remplacer les caractères de chaîne en javascript Remplacer les caractères de chaîne en javascript Mar 11, 2025 am 12:07 AM

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

Tutoriel de configuration de l'API de recherche Google personnalisé Tutoriel de configuration de l'API de recherche Google personnalisé Mar 04, 2025 am 01:06 AM

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

Créez vos propres applications Web Ajax Créez vos propres applications Web Ajax Mar 09, 2025 am 12:11 AM

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

Exemple Couleurs Fichier JSON Exemple Couleurs Fichier JSON Mar 03, 2025 am 12:35 AM

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

10 Highlighters de syntaxe jQuery 10 Highlighters de syntaxe jQuery Mar 02, 2025 am 12:32 AM

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

8 Superbes plugins de mise en page JQuery Page 8 Superbes plugins de mise en page JQuery Page Mar 06, 2025 am 12:48 AM

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

10 tutoriels JavaScript & jQuery MVC 10 tutoriels JavaScript & jQuery MVC Mar 02, 2025 am 01:16 AM

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

Qu'est-ce que & # x27; ceci & # x27; en javascript? Qu'est-ce que & # x27; ceci & # x27; en javascript? Mar 04, 2025 am 01:15 AM

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

See all articles