Was ist ein Verschluss, wie wird ein Verschluss generiert und welche Verwendungsszenarien gibt es für einen Verschluss?

1. Was ist ein Abschluss?

Einfach ausgedrückt: Ein Abschluss ist eine Funktion, die Variablen innerhalb anderer Funktionen lesen kann.
Schließung (Abschluss) : In der Funktion verschachtelte Funktion, die interne Funktion ist ein Abschluss . Unter normalen Umständen ist die Funktionsausführung abgeschlossen, die interne Variable wird zerstört (Zerstörung: Speicherplatz freigeben), die interne Funktion wird nicht ausgeführt, die externe Funktionsvariable wird nicht zerstört. Da in der Javascript-Sprache nur die Unterfunktion innerhalb der Funktion die lokale Variable lesen kann, kann der Abschluss einfach als „eine innerhalb einer Funktion definierte Funktion“
verstanden werden .
Ein Abschluss ist also im Wesentlichen eine Brücke, die das Innere der Funktion mit der Außenseite der Funktion verbindet .
Die gebräuchlichste Methode zum Erstellen eines Abschlusses besteht darin, eine Funktion innerhalb einer anderen Funktion zu erstellen . Ein einfaches Abschlussbeispiel :

function F1(){
    var a = 29;
    return function(){
        console.log(a);
    }
}

var a = 2;
var f1 = F1();
f1();

Erstellen Sie mithilfe von Abschlüssen eine separate private Variable (Modularität).

let JC = (function () {
  let a = 10, b = 20;
  function add() {
    return a + b;
  }
  function sub() {
    return a - b;
  }
  return {
    add,
    sub
  }
})()
 
let result1 = JC.add();
let result2 = JC.sub();
console.log(result1);//30 
console.log(result2); //-10

umfassende Zusammenfassung

Abschluss (Abschluss):
1. Ein Abschluss bezieht sich auf eine Funktion innerhalb einer Funktion, die das Recht hat, auf Variablen innerhalb einer anderen Funktion zuzugreifen. Auch wenn die interne Funktion zurückgegeben oder aufgerufen wird, bestehen ihre Zugriffsrechte weiterhin.
2. Schließungen können verwendet werden, um private Attribute zu simulieren, um das Ausblenden und Einkapseln von Daten zu realisieren. Beispielsweise verwendet die Kapselung von Anti-Shake- und Drosselungsfunktionen Schließungen, es muss jedoch vermieden werden, dass Schließungen missbraucht werden, um Speicherverluste zu verursachen.

2. Wie der Abschluss generiert wird

Normalerweise werden der Gültigkeitsbereich einer Funktion und alle ihre Variablen zerstört, nachdem die Ausführung der Funktion abgeschlossen ist. Nachdem jedoch ein Abschluss erstellt wurde, bleibt der Umfang dieser Funktion bestehen, bis der Abschluss nicht mehr vorhanden ist.
Wenn in Javascript auf ein Objekt nicht mehr verwiesen wird, wird das Objekt durch den Garbage-Collection-Mechanismus recycelt.
Wenn zwei Objekte aufeinander verweisen und nicht mehr von einem Dritten referenziert werden, werden die beiden Objekte, die aufeinander verweisen, ebenfalls recycelt.
Abschlüsse können nur den letzten Wert einer Variablen in der einschließenden Funktion abrufen

3. Verwenden Sie Schließungsszenarien

Es gibt zwei Hauptverwendungszwecke: Der eine besteht darin, die Variablen innerhalb der Funktion zu lesen, und der andere darin, die Werte dieser Variablen jederzeit im Speicher zu behalten.
1. Sie können die Variablen innerhalb der Funktion lesen. Unter normalen Umständen kann die externe Funktion die Variablen der internen Funktion nicht lesen. Daher kann man sagen, dass der Abschluss eine Brücke ist, die das Innere der Funktion mit der Außenseite der Funktion verbindet, dh die Funktion wird als Parameter übergeben.
2. Da auf die Variablen im Objekt immer verwiesen wird, wird das Objekt vom Garbage-Collection-Mechanismus nicht recycelt. kann immer im Gedächtnis behalten werden.

4. Zu beachtende Punkte bei der Verwendung von Verschlüssen

1. Da die Schließung dazu führt, dass die Variablen in der Funktion im Speicher gespeichert werden, ist der Speicherverbrauch sehr hoch, sodass die Schließung nicht missbraucht werden kann. Andernfalls führt dies zu Leistungsproblemen auf der Webseite und kann zu Speicherverlusten im IE führen. Die Lösung besteht darin, alle nicht verwendeten lokalen Variablen zu löschen, bevor die Funktion beendet wird.
2. Der Abschluss ändert den Wert der Variablen innerhalb der übergeordneten Funktion außerhalb der übergeordneten Funktion. Wenn Sie also die übergeordnete Funktion als Objekt, den Abschluss als öffentliche Methode und die interne Variable als privaten Wert verwenden, müssen Sie darauf achten, den Wert der internen Variablen der übergeordneten Funktion nicht zufällig zu ändern.

Guess you like

Origin blog.csdn.net/renfeideboke/article/details/128520821