„Hoisting ist ein Verhalten in Javascript, bei dem alle Variablen- und Funktionsdeklarationen während der Kompilierungsphase vor der Codeausführung an den Anfang des enthaltenden Bereichs verschoben werden“
Sie sind vielleicht überall auf diese Definition gestoßen, aber „es ist ein Mythos, dass alle Variablen- und Funktionsdeklarationen physisch oben im Code stehen“ Das ist nicht wahr!
Aber stattdessen wird beim Hochziehen aller Variablen- und Funktionsdeklarationen bereits vor der Codeausführung in der Kompilierung Speicher zugewiesen und bleibt genau dort, wo wir sie eingegeben haben.
Also genau, wie var/let/const und Funktionen angehoben werden.
Hier einige Beispiele:
console.log(a) // undefined console.log(b) // ReferenceError console.log(c) // ReferenceError var a = 10; let b = 20; const c = 30;
Variable, die mit var deklariert wurde, wird angehoben und während der Kompilierungszeit wird die Variable var im Speicher mit dem Wert undefiniert zugewiesen. Deshalb erhalten wir undefiniert, wenn wir var vor der Deklaration trösten
Variable, die mit const/let deklariert wurde, wird ebenfalls angehoben, aber nicht mit undefiniert initialisiert. Wir können vor der Deklaration nicht auf sie zugreifen, andernfalls erhalten wir einen ReferenceError. Dies liegt an der temporären Totzone, einer Zeit, in der Variablen vorhanden, aber nicht initialisiert sind.
Aber was ist mit der Funktion
Nun, es kommt darauf an, wie wir unsere Funktionen deklarieren. Siehe unten.
greet1(); greet2(); greet3(); greet4(); //function declaration is full hoisted function greet1(){ console.log("greet1"); } // TypeError: greet2 is not a function var greet2 = function(){ console.log("greet2"); } // ReferenceError: Cannot access 'greet3' before initialization let greet3 = function(){ console.log("greet2"); } // ReferenceError: Cannot access 'greet4' before initialization const greet4 = function(){ console.log("greet2"); }
Die traditionelle Funktionsdeklaration ist vollständig hochgezogen, sodass wir sie im gesamten Code aufrufen können.
Aber mit dem Funktionsausdruck können wir das nicht, bevor er deklariert wurde. Aus diesem Grund geben uns drei mit Variablen deklarierte Funktionen einen Fehler. Wir haben also zwei Möglichkeiten: Entweder wir ändern den Funktionsausdruck in eine Funktionsdeklaration oder wir rufen die Funktion nach der Deklaration auf.
Das obige ist der detaillierte Inhalt vonHochziehen in Javascript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!