Heim > Artikel > Web-Frontend > Ausführliche Erläuterung des Prinzips und der Implementierung des JavaScript-Pre-Parsings
JavaScript ist zweifellos eine interpretierte Sprache, aber wird sie zur Laufzeit nur Satz für Satz von oben nach unten analysiert?
Tatsächlich oder irgendein Phänomen beweist, dass dies nicht der Fall ist. Durch den „JavaScript Definitive Guide“ und zugehörige Online-Informationen haben wir erfahren, dass JavaScript ein „Vorparsing“--Verhalten aufweist. Es ist wichtig, diese Funktion zu verstehen, da sonst viele Probleme auftreten können, die während der eigentlichen Entwicklung nicht gelöst werden können und sogar zu Programmfehlern führen. Um dieses Phänomen zu analysieren und als Zusammenfassung meiner eigenen Erkenntnisse wird Ihnen dieser Artikel schrittweise dabei helfen, das „Vorparsen“ von JavaScript zu verstehen. Wenn meine Meinung falsch ist, korrigieren Sie mich bitte.
(1) Wenn JavaScript zur Laufzeit nur von oben nach unten geparst wird, ist es verständlich, dass der folgende Code korrekt ausgeführt werden kann, da wir zuerst die Funktion definieren und sie dann aufrufen.
function showMsg() { alert('This is message'); } showMsg(); // This is message
(2) Wir wissen auch, dass Funktionen nach dem Aufruf des Codes definiert werden können und der folgende Code auch normal funktionieren kann. Es scheint, dass showMsg() beim Aufruf von showMsg() immer noch nicht definiert ist, aber es funktioniert normal, was darauf hinweist, dass JavaScript „vorab analysiert“ ist.
showMsg(); // This is message function showMsg() { alert('This is message'); }
(3) Das Obige ist ein Beispiel für eine Funktion, und hier ist ein weiteres Beispiel für eine gewöhnliche Variable. Wenn das folgende Beispiel ausgeführt wird, wird undefiniert angezeigt, was darauf hinweist, dass msg im ersten Satz definiert, aber nicht initialisiert wurde. Es ist dasselbe wie var msg(msg);. Wenn Sie den zweiten Satz unten mit auskommentieren, wird der Fehler „Nachricht ist nicht definiert“ gemeldet. Dies weist auch darauf hin, dass JavaScript „vorab analysiert“ ist.
alert(msg); //undefined var msg='This is message';(4) Schauen wir uns ein weiteres Beispiel an, um unseren Eindruck vom „Vorparsen“ von JavaScript zu vertiefen. Im folgenden Code sehen Sie, dass das Dialogfeld, das zweimal angezeigt wird, „Dies ist Meldung 2“ anzeigt. Warum ist das so? Tatsächlich werden unten nacheinander zwei Funktionen mit demselben Namen definiert. Die spätere showMsg() überschreibt die zuvor definierte (in JavaScript treten auch bei Variablen mit demselben Namen Probleme beim Überschreiben auf), was bedeutet, dass die erste showMsg(). wird verschrottet. Warum ruft der zweite Aufruf von showMsg() nicht die oben definierte Funktion „Nachricht 1“ auf? Dies beweist einmal mehr, dass JavaScript ein „Vorparsing“-Verhalten aufweist.
showMsg(); // This is message 2 function showMsg() { alert('This is message 1'); } showMsg(); // This is message 2 function showMsg() { alert('This is message 2'); }(5) Beim „Vorparsen“ von JavaScript werden Variablen oder Funktionen vorab in die Umgebung analysiert, in der sie aufgerufen werden können (Variablenlaufzeitumgebung). Der folgende Code scheint die Definition von msg vor der Warnung (msg) gesehen zu haben, aber das Programm meldet immer noch den Fehler „msg ist nicht definiert“. Dies liegt daran, dass die in der Funktion definierten Variablen private Variablen der Funktion sind und nicht definiert sein können direkt von außen aufgerufen. Dies weist darauf hin, dass das „Vorparsen“ von JavaScript nicht das Parsen aller definierten Variablen in ein globales
-Objekt bedeutet, wie z. B. ein Fenster.
function showMsg() { var msg='This is message'; } alert(msg); // msg未定义(6) Das „Vorparsen“ von JavaScript erfolgt in Abschnitten, genauer gesagt in 3f1c4e4b6b16bbbd69b2ee476dc4f83a-Blöcken. Der folgende Code erscheint in zwei Skriptblöcken auf derselben Seite und definiert drei Funktionen mit demselben Namen. Die Ergebnisse der Programmausführung zeigen, dass showMsg() des zweiten Skriptblocks die ersten beiden showMsg() nicht abdeckt, während das zweite showMsg() des ersten Skriptblocks die ersten showMsg() abdeckt.
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung des Prinzips und der Implementierung des JavaScript-Pre-Parsings. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!