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';
showMsg(); // This is message 2 function showMsg() { alert('This is message 1'); } showMsg(); // This is message 2 function showMsg() { alert('This is message 2'); }
-Objekt bedeutet, wie z. B. ein Fenster.
function showMsg() { var msg='This is message'; } alert(msg); // msg未定义