Carlos B: Anfängerfragen zum Thema Funktionen in JS

Beitrag lesen

Es ist doch grundsätzlich so, dass eine Funktion, die man ins script schreibt, ersteinmal nur wie ein Buch in einem Bücherregal abgelegt ist (ok, vielleicht nicht der gelungenste Vergleich).

Was passiert, wenn die Funktion ausgeführt ist, das heißt, wenn ich das Buch gelesen habe?

Müsste ich das Buch dann nicht wieder zurück ins Regal stellen, sprich die Funktion per Befehl für beendet erklären, damit sie nicht im Speicher bleibt und dessen Kapazität beansprucht?

Der Code der Funktion bleibt so lange im Bücherregal, wie die Funktion definiert ist. Das ist nur logisch, weil der Sinn und Zweck von Funktionen meist der ist, mehrfach aufgerufen zu werden.

Die Variablen, die in der Funktion angelegt werden, werden möglicherweise bei Verlassen der Funktion automatisch entsorgt – möglicherweise, weil du innerhalb einer Funktion weitere Funktionen erzeugen kannst, die auf Variablen der ursprünglichen Funktion zugreifen und erst später aufgerufen werden. Deine Eventlistener wären solche Funktionen:

var mama = function () {  
  var bla = "Blabla"  
  var tochter = function () {  
    alert(bla);  
  }  
  window.setTimeout(tocher, 2000);  
}

Da die Tochterfunktion auf die Variable bla zugreift, die in der Elternfunktion mama() definiert ist, kann bla nach Durchlauf von mama() nicht einfach entsorgt werden.