Was ist eine Voranalyse?Konzept: Bevor der JS-Code von oben nach unten ausgeführt wird, analysiert der Browser zunächst alle Variablendeklarationen. Diese Phase wird als Vorparsing bezeichnet. Detaillierte Erklärung Suchen Sie im Gültigkeitsbereich nach Variablen- und Funktionsdeklarationen (anonyme Funktionen haben keine Funktionsdeklarationen und werden daher nicht angehoben), deklarieren Sie sie dann im Voraus, lassen Sie die Zuweisungsvorgänge an Ort und Stelle und führen Sie den Code dann von oben nach unten aus. Dies ist ein Voranalyseprozess. Der Unterschied zwischen Variablen- und Funktionsvorbereitung Während der Voranalyse werden alle mit Mit Von Hinweis: Anonyme Funktionen haben keine Funktionsdeklarationen und werden daher nicht heraufgestuft. Wiederholte Deklaration der var-Variable Wenn var wiederholt deklariert wird: Wenn es bereits existiert, ignoriert der Compiler Wenn es nicht vorhanden ist, suchen Sie entlang der Anwendungsdomänenkette nach oben. Wenn sie nicht gefunden wird, wird die Variable in diesem Bereich deklariert. Priorität der Variablen- und FunktionsförderungZusammenfassen: Die Funktionspromotion hat eine höhere Priorität als die Variablenpromotion und wird beim Deklarieren einer Variablen mit gleichem Namen nicht überschrieben, wird aber überschrieben, nachdem der Variablen ein Wert zugewiesen wurde. Der folgende Inhalt wurde reproduziert von: https://blog.csdn.net/caoyafeicyf/article/details/53172532 Ein genauerer Blick darauf, warum die Funktionspriorität höher ist als die VariablenprioritätDer Pre-Parsing-Prozess des Browsers Beginnen wir mit einer kleinen Frage. var foo; Funktion foo(){} konsole.log(foo); Das Ergebnis ist der Funktionskörper Das Ergebnis ist gleichzeitig der Funktionskörper
Viele Leute sagen, dass die Funktionsdeklaration eine höhere Priorität hat als die Variablendeklaration. Also, warum? Dies beginnt bereits beim Vorparsing des Browsers. Voranalyseprozess Suche nach vorab analysierten SchlüsselwörternSuchen Sie nach dem Schlüsselwort var Suchen Sie das Funktionsschlüsselwort Vorabanalyse durchführenVerwenden Sie zunächst das Schlüsselwort var, um die Bezeichner zu deklarieren, damit diese Bezeichner definiert werden. Nachdem die Bezeichner definiert wurden, wird bei Verwendung dieses Bezeichners kein Fehler gemeldet. Da jedoch kein Wert zugewiesen ist, ist sein Wert undefiniert. Bisher enthält der Bezeichner einen Verweis auf die Funktion. Einige Details zu beachten
Nachdem wir das Prinzip der Voranalyse gelesen haben, kehren wir zu den beiden Fragen am Anfang dieses Artikels zurück, analysieren den Voranalyseprozess und verstehen im Detail, warum die Priorität der Funktion höher ist als die Priorität der Variablen. folgen Sie mir Schauen wir uns zuerst den ersten an var foo; Funktion foo(){} konsole.log(foo); Der Voranalyseprozess ist: var foo;<----var in Variablendeklaration var foo;<----var aus der Funktionsdeklaration extrahiert foo = function () {} <----Funktionsdeklaration extrahiert Zuweisung console.log(foo); Schauen wir uns den zweiten an Funktion foo(){} var foo; konsole.log(foo); Der Voranalyseprozess ist: var foo;<----var in Variablendeklaration var foo;<----var aus der Funktionsdeklaration extrahiert foo = function () {} <----Funktionsdeklaration extrahiert Zuweisung console.log(foo) Vergleichen Sie die beiden. Was fällt Ihnen auf? Es stellt sich heraus, dass ihr Voranalyseprozess derselbe ist, weshalb Funktionen eine höhere Priorität als Variablen haben. Wenn Sie den obigen Inhalt verstehen, dann hier eine weitere Frage: var a = 1; Funktion a(){} konsole.log(a); Wie analysiert der Browser es? Folgen wir meinem Gedankengang: 1. Der Parser sucht zuerst nach dem Schlüsselwort „var“, findet es in der ersten Zeile und extrahiert es an den Anfang. Hier ist der vom Parser verarbeitete Codeprozess: var a;<----var in Variablendeklaration var a;<----var aus der Funktionsdeklaration extrahiert a=function (){}<----Funktionsdeklaration extrahiert die Zuweisung a=1; konsole.log(a); Oben finden Sie detaillierte Informationen zum Unterschied zwischen JS-Preparsing und Variablenförderung bei Webinterviews. Weitere Informationen zu JS-Preparsing und Variablenförderung finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: So installieren Sie MySQL 5.7.29 mit einem Klick mithilfe eines Shell-Skripts
>>: Codebeispiel für das Nutzungsszenario der Nginx-Domänenweiterleitung
Kürzlich habe ich ein Spark-Streaming-Programm in...
Inhaltsverzeichnis 1. Baidu Map API-Zugriff 2. Ve...
Nach der Installation der neuesten Version 8.0.11...
In diesem Artikel wird der spezifische Code von j...
Inhaltsverzeichnis Docker Compose-Nutzungsszenari...
Wenn wir mit Docker einen MySQL-Container erstell...
1. Laden Sie mysql-8.0.17-winx64 von der offiziel...
(Win7-System) Tutorial zur Installation einer vir...
Die meisten der ersten Computer konnten nur ASCII...
Vorwort Jeder, der schon einmal JSON verwendet ha...
Inhaltsverzeichnis 1. Welche Inhalte müssen üblic...
Seit kurzem ist https auch auf dem Handy möglich....
Wenn Dateien von einem Prozess verwendet und vers...
Vue3-Projektkapselung Seitennavigation Textskelet...
1. Dynamische Parameter Ab 2.6.0 können Sie einen...