Ich lese den Ausführungskontext/Lexikalische Umgebung Abschnitt der ECMA 262 5 specification. Es gibt die folgenden: (Hervorhebung hinzugefügt)Hat ein Funktionsausdruck einen eigenen Bereich/lexikalische Umgebung?
A lexikalische Umgebung ist eine Spezifikation Typ verwendet, um die Assoziation von Identifikatoren auf bestimmte Variablen und Funktionen auf die lexikalische Verschachtelungsstruktur von ECMAScript-Code basiert zu definieren. Eine Lexikalische Umgebung besteht aus einem Umgebungsdatensatz und einem möglicherweise Nullbezug auf eine äußere Lexikalische Umgebung. Normalerweise ist eine Lexikalische Umgebung mit einer bestimmten syntaktischen Struktur von ECMAScript-Code wie einer FunctionDeclaration, einer WithStatement- oder einer Catch-Klausel eines TryStatements assoziiert, und jedes Mal, wenn ein solcher Code evaluiert wird, wird eine neue Lexical-Umgebung erstellt.
Ich bemerkte, dass es nichts über das Erstellen einer lexikalischen Umgebung für Funktionsausdrücke sagt. Wird eine lexikalische Umgebung für Funktionsausdrücke erstellt oder nur für Funktionsdeklarationen erstellt? Fehle ich etwas?
Bearbeiten: Ich stelle fest, dass Funktionscode its own execution context haben wird, weshalb ich auch verwirrt bin, warum Funktionsausdruck in der lexikalischen Umgebung nicht erwähnt wird.
Da die Liste der Beispiele mit "wie" beginnt, denke ich nicht, dass sie erschöpfend sein sollen. – Pointy
[Abschnitt 13] (http://www.ecma-international.org/ecma-262/5.1/#sec-13) scheint vorzuschlagen, dass neue lexikalische Umgebungen nur für Funktionsausdrücke mit Namen (und nicht für anonyme Funktionen) erstellt werden Ausdrücke oder Funktionsdeklarationen). Aber ich muss es falsch interpretieren. –