Maison > Article > interface Web > En une phrase : Qu’est-ce que la clôture ?
En une phrase : une fermeture est une fonction qui capture les liaisons externes dans la portée.
Définition officielle : Une expression (généralement une fonction) qui a de nombreuses variables et un environnement lié à ces variables, car ces variables sont également appelées partie de l'expression.
La relation entre les variables libres et les fermetures : Les variables libres sont fermées à la création de fermetures.
La logique interne est
Variables libres : S'il y a d'autres fonctions à l'intérieur d'une fonction, alors ces fonctions internes peuvent accéder aux variables déclarées dans la fonction externe (ces variables sont appelées variables libres).
Trois caractéristiques des fermetures :
1. Les fonctions imbriquées dans les fonctions
2. Paramètres et variables
3. Les paramètres et variables ne seront pas recyclés par le mécanisme de garbage collection
L'inconvénient de la fermeture est qu'elle est résidente en mémoire et augmentera l'utilisation de la mémoire, une mauvaise utilisation peut facilement provoquer des fuites de mémoire.
Avantages des fermetures :
1 J'espère qu'une variable. peut Résider à long terme en mémoire
2.Éviter la pollution des variables globales
3 Existence de membres privés
function fn(){//闭包 fn() | |
var a = 10; | |
function f1(){ | |
a++; | |
console.log(a); | |
} | |
return f1; | |
} | |
var f = fn(); | |
f(); | |
f(); | |
f(); |
La fermeture résout le problème de la valeur de l'index :
charset="UTF-8"> | |
Problème de fuite de mémoire :
Les objets JS et DOM d'IE utilisent des mécanismes de récupération de place différents, donc les fermetures dans IE provoqueront des fuites de mémoire, c'est-à-dire que les éléments résidant en mémoire ne pourront pas être détruits.
fonction fermeture() |
|
||||||||||||||||
var oDiv = document.getElementById("div1");//oDiv Il reste en mémoire après utilisation | |||||||||||||||||
oDiv.onclic = function() | |||||||||||||||||
alert("oDiv.innerHTML");//L'utilisation d'oDiv ici entraînera des fuites de mémoire | |||||||||||||||||
}; | |||||||||||||||||
|
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!