Der sogenannte Abschluss sollte sich beziehen auf: Die interne Funktion liest Variablen außerhalb der aktuellen Funktion, also des Kontexts, in dem sie erstellt wurde.
Funktion hallo(){
var char = "hello,world";
Funktion print(){
console.log(char);
};
Rückgabe print();
}
Es ist zu beachten, dass sich die Druckfunktion hier auf die Char-Variable der externen Hallo-Funktion bezieht, sodass wir hier ein
zurückgeben können
Hallo, Welt
In gewisser Weise sollte diese Funktion dem Umfang zugeschrieben werden. Natürlich haben wir keine Möglichkeit, direkt auf char zuzugreifen, es sei denn, es liegt ein Fehler vor, wenn wir diese Variable deklarieren. Wie zum Beispiel
Funktion hello(){
char = "hello,world";
Funktion print(){
console.log(char);
};
Rückgabe print();
}
Nur weil eine Variable fehlt.
Hier wird „Hallo“ zum Abschluss. Verschlüsse sind eine besondere Art von Objekten. Es besteht aus zwei Teilen: der Funktion und der Umgebung, in der die Funktion erstellt wird. Die Umgebung besteht aus allen lokalen Variablen, die zum Zeitpunkt der Erstellung des Abschlusses im Gültigkeitsbereich waren.
Javscript-Schließung und das
Es ist zu beachten, dass es beim Lesen und bei den Argumenten zu Problemen kommen kann.
Funktion hello(){
This.char = "hello,world";
Funktionsausgabe(){
char = „Ich bin kein Hallo Welt“;
console.log(this.char);
};
Rückgabeausgabe();
}
Natürlich ist dieses Beispiel nicht angemessen, daher benötigen wir ein zusätzliches Beispiel, um dieses Problem zu erklären. Hier ist ein Beispiel aus „Javascript Advanced Programming“, um dieses Problem zu veranschaulichen.
var name = "Das Fenster";
var object = {
Name: „Mein Objekt“,
getNameFunc: function(){
return function(){
return this.name;
}
}
};
object.getNameFunc()()
Es ist nur so, dass diese Verwendung real ist und die Lösung darin besteht, eine temporäre Variable zu speichern, wie im Artikel „
Einige Kenntnisse darüber in Javascript“ erwähnt.
var name = "Das Fenster";
var object = {
Name: „Mein Objekt“,
getNameFunc: function(){
var that = this;
return function(){
return that.name;
}
}
};
object.getNameFunc()()
Fermetures Javascript et variables de lecture et d'écriture
Il est à noter que si nous ne gérons pas bien nos variables, nous pouvons également modifier ces variables.
fonction bonjour(){
var char = "bonjour, le monde";
Retour{
set : fonction(chaîne){
return char = string;
},
print : function(){
console.log(char)
>
>
>
var dire = bonjour();
say.set('nouveau bonjour,monde')
say.print() // nouveau bonjour tout le monde
Fermetures et performances Javascript
Citation de MDC
Si les fermetures ne sont pas nécessaires pour une tâche spécifique, il n'est pas judicieux de créer inutilement des fonctions au sein d'autres fonctions, car les fermetures ont un impact négatif sur les performances du script, notamment la vitesse de traitement et la consommation de mémoire.
L'article le mentionnait également.
Par exemple, lors de la création d'un nouvel objet ou d'une nouvelle classe, les méthodes doivent généralement être associées au prototype de l'objet plutôt que définies dans le constructeur de l'objet. La raison en est que la méthode sera réaffectée à chaque appel du constructeur (c'est-à-dire à chaque création d'objet).