Heim >Web-Frontend >js-Tutorial >Rick und Morty und Clorsures: Was haben diese Dinge gemeinsam?

Rick und Morty und Clorsures: Was haben diese Dinge gemeinsam?

Susan Sarandon
Susan SarandonOriginal
2024-10-24 06:36:02770Durchsuche

Rick and Morty e Clorsures: o que essas coisas tem em comum?

Also, wie geht es dir? Ich hoffe es!

Ich habe versucht, einige Programmierprobleme in Leetcode zu lösen, und bin bei einer der Herausforderungen auf ein sehr wichtiges Programmierkonzept gestoßen, das viele Menschen nur schwer verstehen können.

Deshalb habe ich beschlossen, hier zu schreiben, um bestmöglich zu erklären, wie Abschlüsse in JavaScript funktionieren. Komm mit!

Das Problem

Ich arbeitete an einer Herausforderung namens „Counter“, bei der ich eine Zählerfunktion erstellen musste, die zunächst die Ganzzahl n zurückgab und bei jedem weiteren Aufruf eine Einheit mehr als den vorherigen Wert zurückgab. Zum Beispiel:

  • counter(10) gibt 10 zurück
  • counter() (erneut aufgerufen) gibt 11 zurück
  • counter() (erneut aufgerufen) gibt 12 zurück

Das Problem gibt einige Hinweise, einschließlich der Tatsache, dass wir Funktionen verwenden können, die andere Funktionen zurückgeben.

Das ist das Konzept von Schließungen. Also folgte ich dem Tipp und ging diesen Weg. Hier ist die Lösung, die ich gefunden habe:

var createCounter = function (n) {
    let contador = n;
    return function () {
        resultado = contador;
        contador++
        return resultado;
    };
};

Dieser Code definiert eine Funktion namens „createCounter“, die eine andere Funktion (Abschluss) zurückgibt, die in der Lage ist, eine lokale Variable (in diesem Fall den Zähler) zu speichern und zu manipulieren.

  • Der Zähler beginnt mit dem Wert von n, der beim Aufruf von createCounter() übergeben wird.
  • Jedes Mal, wenn Sie die Funktion ausführen, greift die innere (Rückgabe-)Funktion auf den aktuellen Zählerwert zu, gibt ihn zurück und erhöht ihn dann.
  • Dadurch kann sich der Zähler dank des Verschlusses „merken“, wo er aufgehört hat.

In diesem letzten Schritt erkennen wir die wahre Kraft eines Abschlusses. Ein Abschluss liegt vor, wenn eine Funktion eine andere Funktion zurückgibt, die Zugriff auf externe Variablen hat und ihren Zustand zwischen Aufrufen beibehält. Es ist, als hätte ich in meiner Funktion ein kleines „Versteck“, in dem ich Informationen speichern und später darauf zugreifen kann.

Und wo passen Rick und Morty in diese Geschichte?

Die Rick and Morty-Reihe spielt mit interdimensionalem Reisen und anderen Zivilisationen und kritisiert und regt Überlegungen zu vielen existenziellen Fragen für den Menschen an.

Wenn Sie die Serie nicht kennen, hier eine kurze Zusammenfassung: Rick Sanchez, die Hauptfigur des Werks, ist ein Wissenschaftler, der allerlei verrückte Technologie entwickelt und normalerweise seinen Enkel Morty auf seine Abenteuer mitnimmt. Eine der berühmtesten Erfindungen des alten Mannes ist das interdimensionale Portal, das es ihm ermöglicht, zwischen Realitäten und Dimensionen zu reisen. Um mehr zu erfahren, müssen Sie sich die Serie ansehen (lacht).

Was willst du damit sagen, Neilton?

Stellen Sie sich vor, Rick entwickelt einen interdimensionalen Rucksack für Morty, der Zugang zu einer bestimmten Dimension ermöglicht. In dieser Dimension platziert Rick einige wichtige Werkzeuge. Morty kann den Rucksack überall hin mitnehmen – sei es zur Schule, zum Spaziergang oder sogar zu einer intergalaktischen Reise – und hat auch außerhalb von Rick Zugriff auf alles, was dort aufbewahrt wird.

Das Beste daran? Morty kann den Rucksack öffnen und die Werkzeuge herausnehmen, wann immer er den Inhalt verwenden oder sogar verändern möchte. Und egal wo es ist, das Gespeicherte bleibt zugänglich.

Und wie hängt dieses Beispiel mit Schließungen zusammen?

  • Rick ist die externe Funktion, die den Bereich (Dimension) und die Variablen (Werkzeuge) erstellt, auf die später zugegriffen werden kann.
  • Morty mit dem Rucksack stellt die interne Funktion dar, die auf die Variablen der externen Funktion zugreifen und diese ändern kann.
  • Die Dimension stellt den lexikalischen Bereich der externen Funktion dar, d. h. die Variablen, die innerhalb der externen Funktion erstellt wurden und auf die die interne Funktion zugreift, auch nachdem die externe Funktion ausgeführt wurde.
  • Die Tatsache, dass Morty von überall aus auf Dinge in der Dimension zugreifen kann, spiegelt die Bereichspersistenz wider: Selbst nachdem die äußere Funktion abgeschlossen ist, behält die innere Funktion den Zugriff auf die Variablen im ursprünglichen Bereich bei.

Abschlüsse sind leistungsstarke Ressourcen in der Programmierung. Als Hauptvorteile der Verwendung von Verschlüssen hebe ich die Kapselung und Memoisierung hervor. Kapselung, da auf den Wert nur über den Abschluss (interne Funktion) zugegriffen werden kann, und Memoisierung, da der Wert von Variablen zwischen Aufrufen erhalten bleiben kann.


KI-generiertes Bild: https://designer.microsoft.com/image-creator?scenario=texttoimage

Eingabeaufforderung: Erstellen Sie ein Bild, in dem Rick von Rick and Morty Morty ein leuchtendes dimensionales Taschengerät überreicht. Morty zieht Gegenstände wie Werkzeuge und Geräte aus der Tasche, während Rick in einem Labor beiläufig die Funktionsweise erklärt. Die Tasche stellt einen Verschluss dar und enthält schwebende Gegenstände, auf die Morty weiterhin zugreifen kann, auch nachdem Rick sich entfernt hat.


Abschluss

Haben Sie also verstanden, was Abschlüsse sind und wie wichtig sie beim Programmieren sind? Manchmal wünschte ich, ich hätte einen Rucksack wie den von Morty, um nützliche Dinge aufzubewahren oder einfach um mich in eine andere Dimension zu teleportieren (lacht).

Wenn Ihnen der Inhalt gefallen hat, kommentieren und teilen Sie ihn! Bitte geben Sie mir Kraft, wenn Sie glauben, dass dieser Artikel anderen helfen wird.

Bis zum nächsten Mal!

Das obige ist der detaillierte Inhalt vonRick und Morty und Clorsures: Was haben diese Dinge gemeinsam?. 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