Heim > Artikel > Web-Frontend > Detaillierte Erläuterung der Variablenförderung und Funktionsförderung in js
Dieser Artikel bringt Ihnen einen Artikel über Variablenförderung und Funktionsförderung basierend auf js (ausführliche Erklärung). Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Herausgeber und schauen wir uns das an. Ich hoffe, es kann allen helfen.
1. Variablenförderung
Vor ES6 hatte JavaScript keinen Gültigkeitsbereich auf Blockebene (ein Paar geschweifte Klammern {} ist ein Bereich auf Blockebene, nur globaler Bereich und Funktionsbereich. Durch das Hochziehen von Variablen wird eine Variablendeklaration an den Anfang ihres Gültigkeitsbereichs verschoben.
Das Beispiel des vorherigen Lebenslaufs ist:
console.log(global); // undefined var global = 'global'; console.log(global); // global function fn () { console.log(a); // undefined var a = 'aaa'; console.log(a); // aaa } fn();
Der Grund, warum das obige Druckergebnis tatsächlich auf die variable Förderung von js zurückzuführen ist , der obige Code wird wie folgt ausgeführt:
var global; // 变量提升,全局作用域范围内,此时只是声明,并没有赋值 console.log(global); // undefined global = 'global'; // 此时才赋值 console.log(global); // 打印出global function fn () { var a; // 变量提升,函数作用域范围内 console.log(a); a = 'aaa'; console.log(a); } fn();
2. Funktionsverbesserung
js Es gibt zwei Möglichkeiten, Funktionen zu erstellen: Funktionsdeklaration und Funktionsliteral. Das Hochziehen von Funktionen gibt es nur in Funktionsdeklarationen! Zum Beispiel:
console.log(f1); // function f1() {} console.log(f2); // undefined function f1() {} var f2 = function() {}
Der Grund für die oben gedruckten Ergebnisse liegt darin, dass die Funktionsförderung in js dazu führt, dass der Code tatsächlich wie folgt ausgeführt wird:
function f1() {} // 函数提升,整个代码块提升到文件的最开始<br>console.log(f1); console.log(f2); var f2 = function() {}
Fazit: Wenn du es gekonnt beherrschen willst, kannst du noch mehr Übungen machen, testen:
console.log(f1()); console.log(f2); function f1() {console.log('aa')} var f2 = function() {}
(function() { console.log(a); a = 'aaa'; var a = 'bbb'; console.log(a); })();
Verwandte Empfehlungen:
Detaillierte Erläuterung der Javascript-Variablenförderung
Vertiefendes Verständnis des Umfangs und des Hebens von Variablen (Heben) in JS
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Variablenförderung und Funktionsförderung in js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!