Tach!
der Vorgang heißt "hoisting" (heben) und sollte zu den "dubious parts" von JavaScript gerechnet werden. Definitiv nicht zu den "good parts".
Gut. Wenn ich mir dazu die MDN-Beschreibung ansehe, ist Hoisting ein theoretisches Konstrukt. Praktisch passiert wohl das was man aus anderen Systemen her kennt. Also dass die Funktions- und Variablendeklarationen (nur var
und abzüglich eventueller Initialisierungen) zur Compile-Zeit im Speicher abgelegt werden, bevor das Script läuft. Und somit sieht es so aus, als ob sie an den Anfang verschoben worden wären.
dedlfix.