Der Inhalt dieses Artikels ist eine Einführung in die Deklarationsförderung in JavaScript (Codebeispiele). Ich hoffe, er wird Ihnen helfen hat geholfen.
1. Übersicht
In JS gehen wir davon aus, dass der Code Satz für Satz ausgeführt wird, aber das ist nicht ganz korrekt.
singer = "周杰伦"; var singer; console.log(singer); // 周杰伦 sing(); // 故事的小黄花 function sing() { console.log("故事的小黄花"); }
Wenn der erste Codeabschnitt oben dem normalen Prozess folgt, wird der folgende var singer
den Wert auf undefined
zurücksetzen, aber das Ergebnis ist „Jay Chou“; Der obige Absatz Der zweite Teil des Codes wird so verstanden, dass er zuerst ausgeführt und dann deklariert wird. Es wird ein Fehler gemeldet, das Ergebnis ist jedoch nicht der Fall.
Der obige Codeblock kann tatsächlich wie folgt umgeschrieben werden:
var singer = undefined; singer = "周杰伦"; console.log(singer); // 周杰伦 function sing() { console.log("故事的小黄花"); } sing(); // 故事的小黄花
Dies liegt daran:
JS-Definitionsanweisungen, Zuweisungen und andere Vorgänge werden während des ausgeführt Kompilierungsphase Dies erfolgt während der Ausführungsphase.Alsokommt zuerst mit der Deklaration, dann mit der Zuweisung und der Ausführung
Dies ist die Deklarationsförderung von Variablen und Funktionen.
2. Funktionsdeklaration hat Vorrang vor Variablendeklarationvar foo = "bar";
function foo() {
}
typeOf(foo); // string
var foo = "bar";
function foo() {
}
typeOf(foo); // string
3. Jede Domain wird zur Förderung erklärt
Der folgende Code gibt 10 aus, warum?
var foo = 1; function bar() { if (!foo) { var foo = 10; } alert(foo); } bar();
Weil:
Jede Domain wird durch Ansprüche beworben.Der obige Code entspricht:
var foo = 1; function bar() { var foo = undefined; if (!foo) { // !foo === true var foo = 10; } alert(foo); } bar();
4. Funktionsausdrücke deklarieren keine Heraufstufung
Was ist zunächst einmal ein Funktionsausdruck?
// 函数声明 function foo() { console.log("函数声明"); } // 函数表达式 var foo = function() { console.log("函数表达式"); }
Funktionsausdrücke deklarieren keine Heraufstufung, also:
foo(); // Uncaught TypeError: foo is not a function // 函数表达式 var foo = function() { console.log("函数表达式"); }
Zusammenfassung
Es gibt einen Mechanismus zur Deklarationsheraufstufung in JavaScript, einschließlich Variablendeklaration und Funktionsdeklaration. Die JS-Engine sucht zur Kompilierungszeit nach Deklarationen für jeden Bereich, während Zuweisungen und Vorgänge zur Ausführungszeit erfolgen.
Funktionsdefinitionen sind in Funktionsdeklarationen und Funktionsausdrücke unterteilt, Funktionsausdrücke jedoch nicht.
Das obige ist der detaillierte Inhalt vonEinführung in das Heben von Deklarationen in JavaScript (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!