Heim  >  Artikel  >  Web-Frontend  >  Einführung in das Heben von Deklarationen in JavaScript (Codebeispiel)

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

不言
不言nach vorne
2019-03-05 14:40:542555Durchsuche

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.

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
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();

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen