Closure Function

Eine Closure ist eine gekapselte Funktion, die von außen nicht veränderbare Werte enthält. Sie wird z.B. in JavaScript für Counter (Zählwerke) eingesetzt und gibt ihren inneren Funktionswert beim Aufruf zurück. Jedoch lässt sich der Wert außerhalb der Funktion von keiner anderen Funktion verändern. Man kann die Funktion beliebig aufrufen und der Wert wird immer weiter hoch gezählt, bleibt aber von äußeren Einflüssen unberührt und somit geschützt.

Konkret definiert ist eine Closure eine geschlossene Funktion, die Zugriff auf den Skope ihrer Umgebungsfunktion hat.

D.h. wenn es nur eine innere Funktion in einer äußeren Funktion gibt, die selbst aber nur auf ihre eigenen Variablen zugreift, jedoch nicht aber auf die Variablen ihrer außeren Funktion, dann ist es keine Closure. Nur wenn die innere Funktion auf die Variablen der äußeren Funktion zugreift, dann ist die innere Funktion eine Closure.
Im folgendem Beispiel greift die innere Funktion auf die Variable number ihrer Umgebungsfunktion (äußere Fn.) zu, was die innere Funktion somit per Definition zu einer Closure macht.
code
function counter() {//äußere Funktion
  var number = 0;
  return function() {//innere Fn. - this is the closure
    number += 1;
    return number;
  }
}
let meinZaehler = counter();// 0 - Initiiert den Counter
console.log(meinZaehler()); // 1 - (Zählt einen weiter)
console.log(meinZaehler()); // 2 - (Zählt noch einen weiter)