JavaScript-Verschlüsse

In diesem Tutorial lernen Sie anhand von Beispielen, wie JavaScript geschlossen wird.

Bevor Sie sich mit Verschlüssen vertraut machen, müssen Sie zwei Konzepte verstehen:

  • Verschachtelte Funktion
  • Rückgabe einer Funktion

Verschachtelte JavaScript-Funktion

In JavaScript kann eine Funktion auch eine andere Funktion enthalten. Dies wird als verschachtelte Funktion bezeichnet. Beispielsweise,

 // nested function example // outer function function greet(name) ( // inner function function displayName() ( console.log('Hi' + ' ' + name); ) // calling inner function displayName(); ) // calling outer function greet('John'); // Hi John

Im obigen Programm greet()enthält die displayName()Funktion die darin enthaltene Funktion.

Rückgabe einer Funktion

In JavaScript können Sie auch eine Funktion innerhalb einer Funktion zurückgeben. Beispielsweise,

 function greet(name) ( function displayName() ( console.log('Hi' + ' ' + name); ) // returning a function return displayName; ) const g1 = greet('John'); console.log(g1); // returns the function definition g1(); // calling the function

Ausgabe

 Funktion displayName () (console.log ('Hi' + '' + Name);) Hi John

Im obigen Programm gibt die greet()Funktion die displayNameFunktionsdefinition zurück.

Hier wird die zurückgegebene Funktionsdefinition der Variablen g1 zugewiesen. Wenn Sie g1 mit drucken console.log(g1), erhalten Sie die Funktionsdefinition.

Um die in der Variablen g1 gespeicherte Funktion aufzurufen, verwenden wir g1()Klammern.

JavaScript-Verschlüsse

In JavaScript ermöglicht das Schließen den Zugriff auf den äußeren Bereich einer Funktion von innerhalb der inneren Funktion, auch nachdem die äußere Funktion geschlossen wurde. Beispielsweise,

 // javascript closure example // outer function function greet() ( // variable defined outside the inner function let name = 'John'; // inner function function displayName() ( // accessing name variable return 'Hi' + ' ' + name; ) return displayName; ) const g1 = greet(); console.log(g1); // returns the function definition console.log(g1()); // returns the value

Ausgabe

 Funktion displayName () (// Zugriff auf Name Variable Rückgabe 'Hi' + '' + Name;) Hi John

Wenn im obigen Beispiel eine greet()Funktion aufgerufen wird, wird die Funktionsdefinition von zurückgegeben displayName.

Hier g1ist ein Verweis auf die displayName()Funktion.

Wenn g1()es aufgerufen wird, hat es weiterhin Zugriff auf die greet()Funktion.

Wenn wir ausführen console.log(g1), wird die Funktionsdefinition zurückgegeben.

Das Konzept der Schließung existiert für andere Programmiersprachen wie Python, Swift, Ruby usw.

Schauen wir uns ein anderes Beispiel an.

 // closure example function calculate(x) ( function multiply(y) ( return x * y; ) return multiply; ) const multiply3 = calculate(3); const multiply4 = calculate(4); console.log(multiply3); // returns calculate function definition console.log(multiply3()); // NaN console.log(multiply3(6)); // 18 console.log(multiply4(2)); // 8

Im obigen Programm nimmt die calculate()Funktion ein einzelnes Argument xund gibt die Funktionsdefinition der multiply()Funktion zurück. Die multiply()Funktion nimmt ein einzelnes Argument yund gibt zurück x * y.

Beides multiply3und multiply4sind Verschlüsse.

Die calculate()Funktion wird als Übergabe eines Parameters bezeichnet x. Wenn multiply3und multiply4aufgerufen werden, hat die multipy()Funktion Zugriff auf das übergebene x-Argument der äußeren calculate()Funktion.

Datenprivatsphäre

Das Schließen von JavaScript hilft beim Datenschutz des Programms. Beispielsweise,

 let a = 0; function sum() ( function increaseSum() ( // the value of a is increased by 1 return a = a + 1; ) return increaseSum; ) const x = sum(); console.log(x()); // 1 console.log(x()); // 2 console.log(x()); // 3 a = a + 1; console.log(a); // 4

Im obigen Beispiel gibt die sum()Funktion die Funktionsdefinition der increaseSum()Funktion zurück.

Die Variable a wird innerhalb der increaseSum()Funktion erhöht . Der Wert der Variablen a kann jedoch auch außerhalb der Funktion geändert werden. In diesem Fall wird a = a + 1;der Wert der Variablen außerhalb der Funktion geändert.

Wenn Sie möchten, dass die Variable a nur innerhalb der Funktion erhöht wird, können Sie einen Abschluss verwenden. Beispielsweise,

 function sum() ( let a = 0; function increaseSum() ( // the value of a is increased by 1 return a = a + 1; ) return increaseSum; ) let x = sum(); let a = 5; console.log(x()); // 1 console.log(x()); // 2 console.log(a); // 5

Im obigen Beispiel setzt die sum()Funktion den Wert von a auf 0 und gibt die increaseSum()Funktion zurück.

Aufgrund der Schließung hat, obwohl sum()bereits ausgeführt, increaseSum()immer noch Zugriff auf a und kann bei jedem Aufruf 1 zu a hinzufügen x().

Und die Variable a ist für die sum()Funktion privat . Dies bedeutet, dass auf die Variable a nur innerhalb der sum()Funktion zugegriffen werden kann.

Selbst wenn Sie es deklarieren aund verwenden, wirkt es sich nicht auf die aVariable innerhalb der sum()Funktion aus.

Hinweis : Im Allgemeinen werden Schließungen aus Datenschutzgründen verwendet.

Interessante Beiträge...