Heim > Web-Frontend > js-Tutorial > Hauptteil

Einführung in das Heben von Deklarationen in JavaScript (Codebeispiel)

不言
Freigeben: 2019-03-05 14:41:06
nach vorne
2620 Leute haben es durchsucht

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("故事的小黄花");
}
Nach dem Login kopieren

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();  // 故事的小黄花
Nach dem Login kopieren

Dies liegt daran:

JS-Definitionsanweisungen, Zuweisungen und andere Vorgänge werden während des ausgeführt Kompilierungsphase Dies erfolgt während der Ausführungsphase.

Also
kommt 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 Variablendeklaration

var foo = "bar";
function foo() {
   
}
typeOf(foo);  // string

var foo = "bar";
function foo() {
   
}
typeOf(foo);  // string
Nach dem Login kopieren
Unabhängig davon, ob die Funktionsdeklaration vor oder nach der Variablendeklaration steht, hat die Variablendeklaration Vorrang vor der Funktionsdeklaration.

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

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

4. Funktionsausdrücke deklarieren keine Heraufstufung

Was ist zunächst einmal ein Funktionsausdruck?

// 函数声明
function foo() {
   console.log("函数声明");
}

// 函数表达式
var foo = function() {
   console.log("函数表达式");
}
Nach dem Login kopieren

Funktionsausdrücke deklarieren keine Heraufstufung, also:

foo();  // Uncaught TypeError: foo is not a function

// 函数表达式
var foo = function() {
   console.log("函数表达式");
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage