Moin Moin!
Naja, du willst keine globalen Variablen, aber sie dennoch von überall ansprechen, als seien sie global.
Moooooment... globale Variablen werden immer in den Speicher geladen, lokale nur wenn sie gebraucht werden.
Falsch. Keine Variable wird in den Speicher geladen, sie *belegt* Speicher. Globale Variablen belegen den Speicher wärend der gesamten Programmlaufzeit (bei Javascript: so lange die Seite geladen ist), lokale Variablen werden beim Funktionsaufruf dynamisch erzeugt und in aller Regel am Funktionsende wieder freigegeben. Alle dort gespeicherten Variablen sind weg. Ausnahmen bestätigen die Regel, wenn die Variable noch in einem anderen Scope benutzt wird (z.B. bei Closures).
Aus diesem Grund wollte ich lokale Variablen von überall her ansprechen können.
Und dann würden sie immer benötigt werden und folglich immer Speicher belegen. Das hast Du nicht bis zu Ende gedacht.
Das von dir gewünschte Feature ist aber nicht dabei, soviel kann ich dir schon verraten.
Das ist bekannt. Deswegen habe ich ja hier nachgefragt. Eventuell gibt es ja die Möglichkeit mit Klammern solche Verkettungen zu verkürzen.
Nicht in Javascript. Perl kann sowas, auch mit Arrays:
$barts_tafel="I will not waste chalk\n" x 100; # ein String mit 100 Wiederholungen
@barts_tafel=("I will not waste chalk\n") x 100; # ein Array mit 100 identischen Strings.
Was passiert eigentlich mit der Variable bei
for(var i=1;...;...)
? Wird die Variable nach dem Durchlaufen der Schleife gelöscht oder bleibt sie innerhalb der Funktion bestehen?
In Javascript existiert sie weiter. Variablen sind ab "var" in der gesamten Funktion sichtbar, auch wenn das "var" irgendwo in einem Block steht. Auch da ist Perls "my" eleganter.
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".