In diesem Beispiel weiß ich, dass es undefined
drucken wird.Javascript: Funktion hissen
var bar = typeof foo;
var foo = function() {
console.log('abcd');
}
foo();
console.log(bar); // -> undefined
So verstehe ich, dass, wenn die Variablen hochgezogen werden, bar
oben foo
bleibt, aber foo
wird ausgeführt, so sollte nicht der Dolmetscher wissen, was foo
ist?
Hinweis: Ich versuche zu verstehen, wie der Interpreter funktioniert. Meine Frage ist nicht, wie man das obige Snippet repariert.
'foo' wurde nicht ausgeführt, wenn' bar' ein Wert von 'typeof foo' zugewiesen wurde. Während des Hochziehens war der Wert von "foo" undefiniert. –
Normalerweise ist es am besten zu vergessen, dass das Heben existiert. Es ist nur wirklich nützlich zu wissen, ob Ihre Funktionen der Lesbarkeit im Weg stehen und Sie sie zuletzt deklarieren wollen, aber Sie müssen sie mit einem benannten Funktionsausdruck deklarieren. – 4castle