Hallo allerseits,
ich habe mal eine Frage zum Thema Funktionen in JavaScript, denn irgendwie ist mir das in den Dokumentationen nicht hundertprozentig klar geworden:
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).
Das heißt, wenn ich beispielsweise irgendwo in mein script schreibe
function closeinfoscreen()
{var infoscreen = document.getElementById("infoscreen");
infoscreen.style.display = "none";};
dann passiert ersteinmal garnichts, denn die Funktion muss erst "aufgerufen" werden, wie man ein Buch aus dem Regal nimmt und darin blättert, indem man beispielsweise schreibt
document.getElementById("infoscreen").addEventListener("click", closeinfoscreen);
Die Frage ist jetzt:
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?
Oder passiert das automatisch?
Oder hängt es vom Inhalt der Funktion ab?
Eine Funktion kann ja so beschrieben sein, dass sie in einer Schleife potentiell ewig weiterläuft, oder, wie im Fall meines Code-Beispiels, lediglich die Anweisung beinhalten, nur eine bestimmte Aktion auszuführen, deren Erfolg mit true oder false zu verifizieren wäre, die also ein klar abgrenzbares Ende besitzt.
Wenn ich also über das DOM die einzelnen Elemente meiner Seite steuere, indem ich Funktionen nach dem Schema meines Code-Beispiels verwende, muss ich die dann irgendwie wieder "schließen", oder werden solche Funktionen nach vollbrachter Tat automatisch wieder "zurück ins Regal gestellt", und verbrauchen keinen Speicher mehr?
Überhaupt, wie verhält sich das mit "inaktiven" Funktionen - welchen Einfluss übt deren schieres Vorhandensein im script auf die Performance einer Seite aus?
Da meine js-Seitensteuerung ziemlich umfangreich zu werden droht, mache ich mir so meine Gedanken über eine möglichst speicherschonende Programmierung...
(Variablen nur innerhalb von Funktionen; EventListener, wenn Element nicht mehr angezeigt wird wieder abschalten usw...)
Würde mich wie immer über etwas Erleuchtung freuen!
Gruß,
euer
Roadster.