Verschlüsse in Javascript verstehen? [Duplikat]

9

Wie kann man Verschlüsse in Javascript verstehen?

  

Im Allgemeinen ist eine Schließung eine Funktion, die an eine oder mehrere externe Variablen gebunden ist. Wenn es aufgerufen wird, kann die Funktion auf diese Variablen zugreifen. In JavaScript werden Schließungen oft implementiert, wenn Funktionen in einer anderen Funktion deklariert werden. Die innere Funktion greift auf Variablen der übergeordneten Funktion zu, selbst nachdem die Elternfunktion beendet wurde

In dieser Aussage ist "eine Schließung eine Funktion, die an eine oder mehrere externe Variablen gebunden ist", bedeutet das, dass wir das tun können: var myFun = Function(msg){...}; ist es richtig?

Was bedeutet "selbst nachdem die Elternfunktion beendet wurde"?

    
user595234 27.03.2013, 18:53
quelle

3 Antworten

5
  

closure ist eine Funktion, die an eine oder mehrere externe Variablen gebunden ist

Ein Beispiel für dieses Konzept ist, dass die Funktionsleiste an die externen Variablen x, y und z gebunden ist:

%Vor%

Die Variable closure bezieht sich auf die innere Funktion bar , die vom Aufruf an foo zurückgegeben wurde. Das Aufrufen von closure ist wie das erneute Eingeben des Bereichs in foo , wodurch alle lokalen Variablen und Parameter von foo sichtbar werden.

  

, selbst nachdem die Elternfunktion beendet wurde

Dies bedeutet, dass nach der Ausführung von foo die in der Variablen closure gespeicherte zurückgegebene Funktion den Zustand foo beibehalten hat. Sie können sogar mehrere unabhängige Schließungen erstellen, indem Sie foo erneut aufrufen:

%Vor%     
Rick Viscomi 27.03.2013 19:07
quelle
0

Ihre Interpretation von externen Variablen ist falsch. Es bedeutet wirklich, dass es das tun kann:

%Vor%     
Dark Falcon 27.03.2013 18:57
quelle
0

Ich bin mir nicht sicher, woher du kommst, aber es hört sich so an, als ob es referenziert, wenn die Elternfunktion beendet ist.

    
Dusty 27.03.2013 19:04
quelle

Tags und Links