Auch wenn die var
Anweisung nach der console.log()
Aussage ist, wird die Erklärung zu Beginn der Funktion gehisst. Dies deklariert eine lokale Variable, die die globale Variable schattiert. Aber die Initialisierung geschieht nicht, bis Sie tatsächlich zu der Anweisung gelangen, die nach der console.log()
-Anweisung ist.
So Ihre Funktion ist äquivalent zu:
function foo() {
var text;
console.log(text);
text = 'inside';
}
Wenn Sie nicht die var
Erklärung verwendet haben dann würden Sie auch weiterhin die globale Variable verwenden, und die Neuzuordnung würde erst nach dem console.log()
passieren.
Geben Sie Text zurück; und alert (foo()) –
@Jonasw nicht 'alert' für Debugging-Anweisungen verwenden. –