Heim >Web-Frontend >js-Tutorial >Ausführungsprozess der JavaScript-Funktion_Javascript-Fähigkeiten
1. Jede JavaScript-Funktion ist eine Instanz des Funktionsobjekts, das über eine interne Eigenschaft [[Scope]] verfügt, auf die nur die JavaScript-Engine zugreifen kann. Scope]] speichert eine Sammlung von Bereichen, die als „Scope-Kette“ bezeichnet wird. Die Sammlung speichert das „Variablenobjekt“ VO oder das „aktive Objekt“ AO (AO hat mehr This- und Argumentattribute als VO).
2. Wenn eine Funktion erstellt wird, werden alle veränderlichen Objekte in der Bereichskette ihres übergeordneten Bereichs zu ihrem [[Bereich]] hinzugefügt (falls der übergeordnete Bereich vorhanden ist). global, dann wird nur ein globales Objekt zur Bereichskette der aktuellen Funktion hinzugefügt).
3. Wenn die Funktion ausgeführt wird, wird die Ausführungsumgebung der Funktion in einen Umgebungsstapel verschoben:
1. Zu diesem Zeitpunkt treten wir in die Variableninitialisierungsphase der Funktion ein: Dieser Wert, Funktionsparameter, Funktionsdeklaration, Variablendeklaration und Argumente Das aktive Objekt AO der aktuellen Funktion wird dann an der Spitze der aktuellen Funktionsbereichskette gespeichert.
Hinweis: AO wird in der folgenden Reihenfolge ausgefüllt:
1. Funktionsparameter (wenn Parameter übergeben werden, werden ihnen Werte zugewiesen, wenn keine Parameter übergeben werden, ist der Anfangswert undefiniert), die zweite Priorität
2. Funktionsdeklaration (bei Namenskonflikten wird diese überschrieben) hat die höchste Priorität
3. Variablendeklaration (initialisieren Sie den Variablenwert auf undefiniert, wenn ein Namenskonflikt auftritt, wird er ignoriert) Dritte Priorität
2. Dann kommt die Ausführungsphase der Funktion. In dieser Phase werden alle in der aktuellen Funktion verwendeten Variablen und Funktionsdeklarationen aus der [[Scope]]-Bereichskette der aktuellen Funktion durchsucht Wenn das AO-Objekt der aktuellen Funktion nicht nach dem übergeordneten Objekt sucht, wird schließlich das globale Objekt gefunden. Wenn keins vorhanden ist, wird ein Fehler gemeldet undefiniert).