Heim > Web-Frontend > js-Tutorial > Ausführliche Erläuterung des Prinzips und der Implementierung des JavaScript-Pre-Parsings

Ausführliche Erläuterung des Prinzips und der Implementierung des JavaScript-Pre-Parsings

黄舟
Freigeben: 2017-03-14 15:32:23
Original
1382 Leute haben es durchsucht

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
Nach dem Login kopieren

(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'); 
}
Nach dem Login kopieren

(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';
Nach dem Login kopieren
(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'); 
}
Nach dem Login kopieren
(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未定义
Nach dem Login kopieren
(6) Das „Vorparsen“ von JavaScript erfolgt in Abschnitten, genauer gesagt in
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage