Kann ich denn eine Variable "abspeichern"? Wenn ich eine Variable in einer Funktion berechnen lasse, würde ich auf diese gerne in einer anderen Funktion zugreifen. Wie bekomme ich das am einfachsten geregelt?
Variablen existieren, wie in den meisten anderen Programmiersprachen auch, innerhalb eines Geltungsbereiches, der sich aus dem lokalen Bereich (üblicherweise die Funktion, in der die Variable definiert wird) und übergeordneten (übergeordnete Funktionen und der globale Namensraum) zusammensetzt.
document ist zum Beispiel eine Variable im globalen Namensraum, auf die du ganz selbstverständlich auch in Funktionen zugreifen kannst. Bei eigenen Variablen ist das nicht anders.
(function () {
var a = 0, b = 0;
function bla() {
a = 1; // Variable a aus übergeordnetem Bereich
}
function fasel() {
var c = 5; // Variable c existiert nur in dieser Funktion
function dings(bumms) {
c = bumms - 1;
}
// c ist 5
dings(b);
// c ist -1, da beim ersten Aufruf b = 0.
b = a + 1; // ändert Variable a und b aus übergeordnetem Bereich
}
a = 5;
bla();
fasel();
console.debug(a, b, c); // gibt a = 1, b = 2 aus und kennt c nicht, da c nur in Unterfunktion fasel() definiert
})();
console.debug(a, b, c); // kennt a, b und c nicht, da alle innerhalb der anonymen Funktion definiert
Allerdings möchtest du den globalen Namensraum nicht mit eigenem Kram zumüllen, halte ihn für den Browser und Javascript-Bibliotheken frei. Das auf den ersten Blick etwas merkwürdige Konstrukt
(function () {
…
})();
das den kompletten Code enthält, erzeugt mit function () eine namenlose / anonyme Funktion, die wegen des abschließenden () auch gleich ausgeführt wird. Es passiert also das Gleiche, als wenn du den Code direkt schreibst, aber sämtliche Variablen bleiben innerhalb dieses geschlossenen Blocks und kommen anderen Skripten nicht in den Weg.