2013-02-21 8 views
52

Warum hisst JavaScript Variablen?Warum hisst JavaScript Variablen?

Was waren die Gründe für die Designer, als sie beschlossen, das Heben zu implementieren? Gibt es andere populäre Sprachen, die das tun?

Bitte geben Sie relevante Links zu Dokumentation und/oder Aufzeichnungen.

+1

["weil Javascript nicht wirklich einen wahren Sinn für lexikalisches Scoping hat"] (http://Stackoverflow.com/a/3725763/344643), was auch immer das bedeutet –

+0

Nice! weißt du, warum ? – Xlaudius

+4

Ich vermute bei * diesem * Punkt ist es historisch, und ich bezweifle ernsthaft, dass es ursprünglich etwas anderes als "Leichtigkeit der Umsetzung" war. –

Antwort

34

Wie Stoyan Stefanov im Buch "JavaScript Patterns" erklärt, ist das Hochziehen das Ergebnis der Implementierung des JavaScript-Interpreters.

Die JS-Code-Interpretation wurde in zwei Durchgängen durchgeführt. Während des ersten Durchgangs verarbeitet der Interpreter Variablen- und Funktionsdeklarationen.

Der zweite Durchlauf ist eigentlich Code-Ausführung Schritt. Der Interpreter verarbeitet Funktionsausdrücke und nicht deklarierte Variablen.

So können wir das Konzept "Heben" verwenden, um ein solches Verhalten zu beschreiben.

Hoffe, das hilft.

+8

Ich persönlich _really_ mag nicht das Wort "hissen".Es gibt die falsche Darstellung, dass Variablen- und Funktionsdeklarationen magisch an den Anfang des aktuellen Bereichs gehisst werden, wenn in Wirklichkeit der JS-Interpreter den Quellcode für die Bindungen scannt und ** dann ** den Code ausführt. – contactmatt

+0

Jetzt habe ich warum JS am meisten missverstanden, ich habe das in keinem Tutorial gesehen. Und wurde mit dem Heben (und dem Interrepter-Fluss) verwirrt. –

+2

Äh, das erklärt nicht wirklich die Gründe. Ein Single-Pass-Interpreter (der nicht zum Hochziehen geführt hätte) wäre viel einfacher gewesen - warum haben sich die Designer für zwei Pässe entschieden? – Bergi