2016-03-26 17 views
0

Wenn wir die Operation von Javascript-Engine in die Kompilierungsphase (wo das gesamte lexikalische Scope-Diagramm eingerichtet ist) Vs running phase (wo Code mit lexikalischen Bereich Setup in Kompilierungsphase ausgeführt wird), wann ist der Bereich für Funktionsausdrücke Setup? Ist es während der Kompilierungs- oder Lauf-/Interpretationsphase?lexikalische Bereiche für Funktionsausdrücke

Immer wenn der Bereich für den Funktionsausdruck eingerichtet ist, wird der übergeordnete Bereich immer der globale Bereich sein, oder? (Ich habe diesen Code gesehen, möchte nur bestätigen).

+0

Ich denke, Sie könnten ein paar verschiedene Dinge zusammenfassen. Hier sind zwei gute Artikel, die helfen könnten: [Javascript Scope and Closures] (https://spin.atomicobject.com/2014/10/20/javascript-scope-closures/) und [Of Function Scope and Lexical Scoping] (http://pierrespring.com/2010/05/11/function-scope-and-lexical-scoping/). Beachten Sie besonders den Teil über "Call, Bind, and Apply", – paulsm4

Antwort

0

Es ist einfacher, den Bereich als eine Hierarchie von Funktionen zu betrachten. Wenn Sie Ihre erste Funktion a() definieren, ist der übergeordnete Bereich der globale Bereich. Jede mit a() definierte Funktion hat Zugriff auf den Gültigkeitsbereich von a() und den globalen Gültigkeitsbereich. Jeder Nachfolger im Strukturbaum hat Zugriff auf den übergeordneten Bereich, wobei der Stamm der globale Gültigkeitsbereich ist.

2

Der Funktionsumfang (einschließlich Funktionsausdrücke) wird beim Erstellen der Funktionen eingerichtet - was in der laufenden Phase geschieht. nicht die Parsing-Phase.

+0

Bereiche für Funktionsausdrücke werden in der laufenden Phase (die ich vermutlich in meiner Frage der Kompilierungsphase zuordnet) eingerichtet? Wenn möglich, könntest du mir bitte einen Link/Artikel zukommen lassen, der dies erwähnt. –

+2

Da JS eine interpretierte Sprache mit optimierenden Compilern ist, machen "Phasen" ohnehin keinen Sinn. Es wird nur ein AST analysiert und dann ausgeführt. Dazu gehören das Einrichten von Funktionen und das Zusammenstellen ihrer Körper. – Bergi

-1

Tatsächlich gefunden wenige Links [1] und [2] hatte gute Erklärungen zu diesem Thema. Es scheint, dass (RHS) der Funktionsausdrücke zur Laufzeit interpretiert werden, während Funktionsdefinitionen für den Bereich zur Kompilierungszeit festgelegt werden.

Verwandte Themen