• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Komische Funktionen: setTimeout(function(){ alert("Hello"); }, 3000);

Karli1969

New member
Hallo zusammen,

habe noch mal ein JS-Anfängerproblem:

Insbesondere dieses unübersichtliche Konstrukt hier: setTimeout(function(){ alert("Hello"); }, 3000);

Ist das eine abkürzende Schreibweise für

--------------------------------------------------------------------------------
meinefunktionfuerdiemirkeinenameeinfaellt () {
alert("Hello");
}

setTimeout(meinefunktionfuerdiemirkeinenameeinfaellt (), 3000);
--------------------------------------------------------------------------------


???
 
Ja, das siehst Du richtig, beide Schreibweisen haben die gleiche Funktion. Allerdings hast Du einen Fehler gemacht: Richtig ist:
setTimeout(meinefunktionfuerdiemirkeinenameeinfaellt, 3000);
d. h. ohne Klammern. Damit wird setTimeout die Funktionsreferenz übergeben, ohne die Funktion sofort auszuführen. Mit Klammern wird die Funktion sofort ausgeführt und der Rückgabewert an setTimeout übergeben, was ja in dem Fall nicht richtig ist.
Für Einsteiger ist die erste Notation mit der anonymen Funktion vielleicht etwas undurchsichtig, aber man gewöhnt sich daran und sie wird häufig bevorzugt, weil sie kürzer ist.
 
beide Schreibweisen haben die gleiche Funktion.
Sie haben nicht exakt die gleiche Funktion. Das eine ist eine function expression und das andere eine function declaration: javascript - var functionName = function() {} vs function functionName() {} - Stack Overflow

weil sie kürzer ist.
Sie hat auch noch den Vorteil (oder Nachteil - je nach sichtweise), dass sie keine (lokale oder gloable) Variable anlegt und damit dem Namespace nicht zumüllt.
 
Zurück
Oben