..before test()
ausgeführt foo oder nach?
Es hängt davon ab, welche globale Variable Sie beziehen, test
oder foo
.
Für test
: Vorher. var
Deklarationen werden "gehisst", sie werden verarbeitet, bevor ein Schritt-für-Schritt-Code in dem Bereich, in dem sie angezeigt werden, ausgeführt wird; Globale werden vor jedem Schritt-für-Schritt-Code im globalen Umfang in diesem Skript ausgeführt. (Nachfolgende Skripte werden separat behandelt, zuerst vars, dann Schritt-für-Schritt-Code.)
Für foo
: Während.
Die Reihenfolge dieser Code ist:
- Erklärungen auftreten:
- Die globale
test
wird mit dem Wert undefined
erstellt.
- Schritt-für-Schritt-Ausführung erfolgt:
- Die Zuordnung
test = function() { foo = 5 }
wird ausgeführt
- Die Funktion erstellt wird
- zugeordnet ist, zu
test
test()
ausgeführt wird
- Die Zuordnung
foo = 5
erfolgt, wodurch ein implizite globale genannt foo
(mehr auf meinem Blog: The Horror of Implicit Globals)
Es wäre hilfreich, wenn Sie klären könnten, ob Sie neugierig auf 'test' oder' foo' sind. – Pointy
@Pointy, ich denke, er fragt nach 'foo', da es ohne' var' erstellt wurde und dafür gedacht ist global zu sein –
Es wäre immer noch gut, das tatsächlich zu sagen. –