function x() {}
ist hoisted zu Beginn des fn
‚s Umfang, und das macht effektiv x
eine lokale Variable vor ausgewertet wird.
Die Funktion ist nicht eingestellt auf 10
.
Aktualisierung: Der obige Satz ist falsch. x
ist tatsächlich auf 10
festgelegt. var
wird nicht verwendet, es zu erklären, aber selbst wenn es war, bezieht sich der letzte Satz in dem Zitat unten nur auf die Erklärung Teil des Namens x
, nicht seine Zuordnung-10
.
Von MDN (Hervorhebung von mir):
Funktion
Drei Formen mit unterschiedlichen Umfang Verhalten:
- erklärt: als Anweisung an die Funktion Top-Mutter -level
- verhält sich wie ein var Bindung, die auf diese Funktion
- Initialisierung "Hubwerke" an die Spitze der übergeordneten Funktion initialisiert wird, oben Vars
var
- Funktionsbereich
- hissen an die Spitze seiner Funktion
- redeclarations mit dem gleichen Namen im gleichen Umfang ist No-ops
Bizarr ... Wenn Sie die Zeile 'function x() ... 'auskommentieren, wird' 10 'angezeigt. – Shmiddty