Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erklärung der Schließungen in JS

Detaillierte Erklärung der Schließungen in JS

小云云
小云云Original
2018-03-26 15:55:261166Durchsuche

Dieser Artikel teilt Ihnen hauptsächlich die detaillierte Erklärung von Schließungen in JS mit. Ich hoffe, dass er Ihnen helfen kann.

var n = 999;
function f1() {
  console.log(n);
}
f1() // 999

JavaScript hat zwei Arten von Bereichen: globalen Bereich und Funktionsbereich. Globale Variablen können direkt innerhalb der Funktion gelesen werden. Die Funktion f1 kann die globale Variable n lesen. Allerdings können innerhalb einer Funktion deklarierte Variablen nicht außerhalb der Funktion gelesen werden.

function f1() {
  var n = 99;
}
console.log(n);

Manchmal müssen wir jedoch von außerhalb der Funktion auf Variablen innerhalb der Funktion zugreifen. Dies ist unter normalen Umständen nicht möglich und kann nur durch Problemumgehungen erreicht werden. Das heißt, eine andere Funktion innerhalb der Funktion zu definieren.

function f1() {
  var n = 999;
  var f2 = function() {
      console.log(n);
  }
return f2;
}
var f = f1();
f();

Im obigen Code befindet sich die Funktion f2 in der Funktion f1. Zu diesem Zeitpunkt sind alle lokalen Variablen in f1 für f2 sichtbar. Aber das Gegenteil funktioniert nicht. Die lokalen Variablen in f2 sind für f1 unsichtbar. Dies ist die einzigartige „Kettenbereich“-Struktur der JavaScript-Sprache. Das untergeordnete Objekt sucht Ebene für Ebene nach den Variablen aller übergeordneten Objekte. Daher sind alle Variablen des übergeordneten Objekts für das untergeordnete Objekt sichtbar, umgekehrt jedoch nicht.

Da f2 die lokalen Variablen von f1 lesen kann, dann geben Sie einfach f2 wird als Rückgabewert verwendet, sodass wir seine internen Variablen außerhalb von f1 lesen können. Den Abschluss bildet die Funktion f2, eine Funktion, die die internen Variablen anderer Funktionen lesen kann. Da in der JavaScript-Sprache nur Unterfunktionen innerhalb einer Funktion interne Variablen lesen können, können Abschlüsse einfach als „innerhalb einer Funktion definierte Funktionen“ verstanden werden. Das größte Merkmal der Schließung besteht darin, dass sie sich an die Umgebung „erinnern“ kann, in der sie geboren wurde. Beispielsweise erinnert sich f2 an die Umgebung f1, in der sie geboren wurde, sodass die internen Variablen von f1 aus f2 abgerufen werden können. Im Wesentlichen ist ein Abschluss eine Brücke, die das Innere einer Funktion mit der Außenseite der Funktion verbindet. Das heißt, es gibt zwei Hauptzwecke von Abschlüssen: Der eine besteht darin, die Variablen innerhalb der Funktion zu lesen, und der andere besteht darin, diese Variablen im Speicher zu behalten existieren; Verwandte Empfehlungen:

Eine kurze Erklärung der Schließungen in JS

Wie Verschlüsse in js verwenden?

Eine kurze Diskussion über Abschlüsse in js_javascript-Fähigkeiten

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der Schließungen in JS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn