Voraussetzung mit VAR-Schlüsselwort
Schauen wir uns zunächst die Ergebnisse dieser Codeausführung an:
Die Codekopie lautet wie folgt:
Alarm (n); // undefined Popup
var n = 10;
Das Ergebnis von Popup ist undefiniert, warum nicht 10? Schauen wir uns die folgenden Ergebnisse der Codeausführung an:
Die Codekopie lautet wie folgt:
Alarm (n);
n = 10;
Der Betriebsbericht lautet wie folgt:
Warum ist diesmal ein Fehlerbericht, dass die Variable N nicht deklariert wird, wenn der Code ausgeführt wird? Durch den Vergleich dieser beiden Codeteile stellen wir fest, dass es einen Unterschied zwischen Variablen mit VAR -Schlüsselwörtern und Variablen ohne VAR -Schlüsselwörter gibt. Bevor der Code ausgeführt wird, scheint der Browser ihnen einen nicht definierten Anfangswert gegeben zu haben. Bevor der Code ausgeführt wird, wird der Prozess der Browser-Engine automatisch Variablen mit VAR-Schlüsselwörtern und Funktionsschlüsselwörtern und definierten Funktionen und Funktionen vor der Ausführung als Vorinterpretation gescannt.
Voraussetzung mit Funktionsschlüsselwort
Sehen wir uns die folgenden Ergebnisse der Codeausführung an:
Die Codekopie lautet wie folgt:
fn (); // popt Hallo
Funktion fn () {
alarm ('Hallo');
}
Das Ausführungsergebnis taucht Hallo und FN kann normal ausgeführt werden. Der Grund dafür ist, dass FN vor der Ausführung des Codes vorbekommen wird. FN wurde während der Voraussetzung definiert (definiert). Wir haben wieder Fragen, warum das erste Codeausführungsergebnis nicht 10 auftaucht, sondern undefiniert ist und ein anderes Konzept erneut vorgestellt wird.
Deklare und Definition in JavaScript
Normalerweise verwenden wir den VAR -Schlüssel, um Variablen zu deklarieren und das Schlüsselwort für Funktionen zu definieren, um Funktionen zu definieren. Das Schlüsselwort der Funktion deklariert und definiert jedoch gleichzeitig Funktionen, während Var nur Variablen deklarieren kann und nicht die Funktion der Definition hat.
Im Folgenden finden Sie Variablen, die mit dem VAR -Schlüsselwort deklariert sind:
Die Codekopie lautet wie folgt:
var n; // eine variable n deklarieren n
var m = 10; // deklarieren Sie eine Variable m und weisen Sie ihr 10 zu
Im Folgenden finden Sie Funktionen, die mit dem Schlüsselwort der Funktion definiert wurden:
Die Codekopie lautet wie folgt:
// eine Funktion fn definieren
Funktion fn () {
alarm ('Hallo');
}
Der Unterschied zwischen der Voraussetzung von VAR-Schlüsselwörtern und den Funktionsschlüsselwörtern der Funktionen
Tatsächlich besteht der Unterschied zwischen den beiden darin, dass beim Vorausplan mit dem VAR-Schlüsselwort nur der Deklarationsteil vorbekundigt wird (da es nicht die Fähigkeit hat, sich selbst zu definieren), während die Deklaration und Definition bei gleichzeitig erklärtem Funktionsdokument gleichzeitig vorgeklärt werden. Dann werden wir den ersten Code erneut analysieren und ihn wie folgt analysieren:
Voraussetzung der Unkonventionalität (Betrug)
Warum soll es unkonventionell sein? Bitte beachten Sie den folgenden Code (außer Firefox):
Die Codekopie lautet wie folgt:
Alarm (n);
fn ();
if (false) {
var n = 10;
Funktion fn () {
alarm ('Hallo');
}
}
Undefiniert wird in der ersten Zeile der Codeausführung auftauchen, und Hello wird in der zweiten Code -Ausführungzeile auftauchen. Weil N und FN vor der Codeausführung vorbekundigt werden. Auch wenn die Bedingung als falsch beurteilt wird, scannt die persistente Browser -Engine die mit dem VAR -Schlüsselwort deklarierte Variable N und fn mit der Funktionstaste -Definition auf.
*Vorinterpretation ignoriert die Neueinrichtung, nicht die Neudefinition
Da dieser Ort relativ verwirrt und nicht leicht zu verstehen ist, hat er einen Sternchen hinzugefügt. Weitere Informationen finden Sie im folgenden Code:
Die Codekopie lautet wie folgt:
Alarm (n);
var n = 10;
var n = 9;
var n;
Alarm (n);
Was ist das Ausführungsergebnis dieses Code? Lassen Sie es uns analysieren:
Laden Sie den Code weiter hoch und analysieren Sie die folgenden Ausführungsergebnisse:
Die Codekopie lautet wie folgt:
fn ();
Funktion fn () {
alarm ('1');
}
fn ();
Funktion fn () {
alarm ('2');
}
fn ();
Das Codeanalyse -Diagramm lautet wie folgt:
Funktionsvoraussetzungsanalyse mit Funktionsdefinition
Zusammenfassen:
In diesem Blog-Beitrag wird ein großes Stück Code und Screenshots verwendet, um die Vorinterpretation in JavaScript zu überwinden. Wenn man sich verschiedene Bücher ansieht, gibt es nur sehr wenige Beschreibungen von Vorinterpretationen. Tatsächlich werden bei der Arbeit nicht viele Szenarien verwendet. Leider sind Vorinterpretationen ein Muss in Interviewfragen für große Unternehmen. Als ich zum ersten Mal damit in Kontakt kam, hatte ich das Gefühl, dass er immer keinen Code nach dem gesunden Menschenverstand geschrieben habe, aber manchmal konnte es normal ausgeführt werden und müsste keinen Fehler melden. Dies hat natürlich auch unsere Erforschung seines Geheimnisses erhöht und es uns auch ermöglicht, weiter zu verstehen, wie die Browser -Engine unseren Code erklärt und ausführt. Ich werde ein paar klassische Fälle verwenden, um sie in den nachfolgenden Blog -Posts zu analysieren. Nochmals vielen Dank für Ihre Unterstützung!