Maison  >  Article  >  interface Web  >  Quand javascript forme-t-il une fermeture ?

Quand javascript forme-t-il une fermeture ?

WBOY
WBOYoriginal
2022-03-02 16:42:462088parcourir

En JavaScript, lorsqu'une fonction interne est appelée en dehors de la fonction externe qui contient la fonction interne, une fermeture est formée ; une fermeture est une zone de pile qui ne libère pas de ressources lorsque la fonction revient. La fermeture est une référence à un. variable de fonction qui est active au retour de la fonction.

Quand javascript forme-t-il une fermeture ?

L'environnement d'exploitation de ce tutoriel : système Windows 10, JavaScript version 1.8.5, ordinateur Dell G3.

Quand JavaScript forme-t-il une fermeture ?

L'explication officielle de la fermeture est : une expression (généralement une fonction) qui a de nombreuses variables et un environnement lié à ces variables, donc ces variables font également partie de l'expression.

Caractéristiques de la fermeture :

1 En référence à une variable de fonction, elle est activée au retour de la fonction.

2. Une fermeture est une zone de pile qui ne libère pas de ressources lorsqu'une fonction revient.

En termes simples, JavaScript permet l'utilisation de fonctions internes --- c'est-à-dire que les définitions de fonction et les expressions de fonction sont situées dans le corps de fonction d'une autre fonction. De plus, ces fonctions internes ont accès à toutes les variables locales, paramètres et autres fonctions internes déclarées dans la fonction externe dans laquelle elles existent.

Une fermeture se forme lorsqu'une de ces fonctions internes est appelée en dehors de la fonction externe qui les contient.

function closure(){
var str = "I'm a part variable.";
return function(){
alert(str);
}
}
var fObj = closure();
fObj();

Dans le code ci-dessus, str est une variable locale définie dans la fonction de fermeture. Si str n'est plus accessible une fois l'appel de la fonction de fermeture terminé, str sera libéré une fois l'exécution de la fonction terminée.

Mais comme la fonction Closure renvoie une fonction interne et que la fonction renvoyée fait référence à la variable str, str peut être référencée après l'exécution de la fonction de fermeture, donc les ressources occupées par str ne seront pas recyclées. Cette fermeture forme une fermeture.

Recommandations associées : Tutoriel d'apprentissage Javascript

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:
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