Hallo,
- Weshalb steht vor function(w) eine geöffnete Klammer?
- Ich sehe hier nur Funktionen, aber nirgends einen Aufruf der Funktionen, bzw. eine Übergabe eines Parameters w...
(function(…) {
…
})(…);
Das ist der sogenannte sofort ausgeführte Funktionsausdruck (immediately-invoked function expression).
Hier wird eine Funktion als Ausdruck erzeugt, die nicht unter einer Variable oder Objekteigenschaft gespeichert wird.
function(…) {…}
Diese Funktion wird direkt aufgerufen, indem der Aufruf-Operator direkt dahinter gesetzt wird:
function(…) {…}(…)
Beispiel:
function() {
alert('Hallo Welt!');
}()
Dieser Ausdruck kann so allerdings nicht alleine (als Statement) stehen, denn er sieht für den Parser nicht wie ein Ausdruck, sondern wie eine Funktionsdeklaration aus. Man verwendet üblicherweise Klammern, um den Parser umzustimmen.
(function() {
alert('Hallo Welt!');
})();
Das ist dann syntaktisch korrekts JavaScript-Programm. Es macht nichts anderes, als den Code in der Funktion auszuführen. Die Funktion wird dann weggeworfen und nirgends gespeichert.
Den ganzen Zirkus veranstaltet man, damit man einen eigenen Variablen-Gültigkeitsbereich (Scope) hat, in dem man zwei schalten und walten kann. Dadurch vermeidet man globale Variablen.
- Braucht es die Variable ori überhaupt, diese wird nirgends mehr aufgerufen...
Jo, sieht so aus.
- Was bedeuten Methoden die mit dem Funktionsparameter beginnen wie zum Beispiel " var doc = w.document;"
Hier wird einfach eine Shortcut-Variable angelegt, um den Zugriff auf w.document zu vereinfachen. Anstatt fünfmal w.document zu notieren und die Objekteigenschaft immer wieder neu abzurufen, wird eine Variable mit dem Wert angelegt. Das verschlankt auch den Code, macht ihn besser lesbar und macht ihn besser komprimierbar.
Mathias