Heim >Web-Frontend >js-Tutorial >Detaillierte Interpretation der JS-Vorinterpretation
Jetzt werde ich Ihnen ein relevantes Verständnis der JS-Vorinterpretation vermitteln. Lassen Sie mich es jetzt mit Ihnen teilen und es allen als Referenz geben.
1. Der Speicherplatz in JS ist in zwei Typen unterteilt: Stapelspeicher und Heapspeicher.
Stapelspeicher: Bietet eine Umgebung für die Ausführung von JS-Code Typen Wert; ->Globaler Bereich oder privater Bereich sind eigentlich Stapelspeicher
Heapspeicher: Speichert Werte von Referenzdatentypen (Objekte speichern Attributnamen und Attributwerte darin, und Funktionen speichern das Attribut Namen und Attributwerte im Funktionskörper) Der Code wird als Zeichenfolge gespeichert)
2. Wenn der Browser unsere HTML-Seite lädt, stellt er zunächst eine Umgebung für die Ausführung von JS-Code bereit -> ; globaler Bereich (global-> Fenster)
3. Bevor der JS-Code ausgeführt wird, muss der Browser etwas selbst tun: alle Schlüsselwörter im Voraus mit var/function deklarieren oder definieren -> "Vorinterpretation" (Variabler Ton)
Sagen Sie dem Browser, dass ich so etwas habe, wie zum Beispiel var num1; -> Geben Sie uns deklarierte Variablen oder Funktionszuweisungen an, z. B. num1=12;
4. Var und Funktion werden in der Vorinterpretationsphase unterschiedlich verarbeitetvar -> wird erst deklariert, wenn der Code ausgeführt wird. Funktion -> direkt übersprungen)
[Wichtig] Zu Beginn wird nur die Vorinterpretation unter Fenster durchgeführt. Derzeit sind alle in der fn-Funktion gespeicherten Zeichenfolgen Zeichenfolgen, daher hat var total keine praktische Bedeutung, also keine Vorinterpretation. Die Interpretation wird durchgeführt -> „Vorinterpretation findet in der aktuellen Funktion statt“
console.log(obj);//->undefined var obj = {name: "张珊珊", age: 10}; function fn(num1, num2) {//代码执行到这一行的时候直接的跳过,因为在预解释的时候我们已经完成了声明加定义 var total = num1 + num2; console.log(total); } var num1 = 12; fn(num1, 100);//执行fn,把全局变量num1的值赋值给形参num1,把100赋值给形参num2im Gültigkeitsbereich 5. Variablen, die im globalen Gültigkeitsbereich deklariert werden, sind globale Variablen
Variablen Im privaten Bereich deklariert sind private Variablen; Funktionen Formale Parameter sind ebenfalls private Variablen;Wie kann man feststellen, ob eine in einer Funktion erscheinende Variable privat oder global ist?
Überprüfen Sie zunächst, ob es sich um eine handelt formalen Parameter und überprüfen Sie dann, ob er in einem privaten Bereich deklariert wurde (Haben Sie schon einmal var verwendet?). Eine der beiden ist eine private Variable, also ist sie unabhängig davon, wo sie in der aktuellen Funktion erscheint, privat und hat nichts Wenn es keines von beiden gibt, bedeutet dies, dass es nicht privat ist, dann suchen Sie in seinem oberen Bereich...
6 Für den Code im Funktionskörper wird ein privater Bereich (Stapelspeicher) gebildet. Ausführung;1) Zuweisen von Werten zu formalen Parametern2) Vorinterpretation im privaten Bereich 3) Codeausführung im privaten Bereich
Neu gebildet durch Der private Bereich schützt auch die privaten Variablen im Inneren vor der Außenwelt. Wir verwenden diesen Schutzmechanismus der Funktion -> „Abschluss“
Unterschied: diejenigen mit var können vor der Ausführung des Codes deklariert werden, ohne var kann nicht im Voraus deklariert werden
window预解释:var a; -> window.a; if (!("a" in window)) {//"a" in window -> true var a = "我们"; } console.log(a);//->undefined
2. Eine Vorinterpretation erfolgt nur, wenn auf der linken Seite von „=" nur die linke Seite vorinterpretiert wird und der Wert auf der rechten Seite nicht vorinterpretiert wird
Funktionsausdruck einer anonymen Funktion: Weisen Sie den durch die Funktion definierten Teil als Wert zu. Wenn Ereignisse von Variablen oder Elementen vorinterpretiert werden: var fn; -> von fn ist undefiniert
fn();//->undefined() Uncaught TypeError: fn is not a function JS中只有函数可以执行 && JS上面的代码如果报错了,在不进行任何的特殊处理情况下我们下面的代码都不在执行了 var fn = function () { console.log("ok"); }; fn(); 预解释的时候:fn=xxxfff000 fn();//->"ok" function fn() { console.log("ok"); } fn();//->"ok"
3. Der folgende Code im Funktionskörper wird nicht mehr ausgeführt, aber der folgende Code muss an der Vorinterpretation teilnehmen und die Dinge nach der Rückgabe müssen verarbeitet werden, aber weil es wird als Wert zurückgegeben, es wird nicht vorinterpretiert;
var total = 300; function fn() { console.log(total); return function sum() {};//return是把函数中的值返回到函数的外面,这里是把function对应的内存地址返回的到函数的外面,例如:return xxxfff111;函数体中return下面的代码都不在执行了 var total = 10; } fn();
4 Die Funktion der anonymen Funktion wirkt global. Es gibt keine Vorinterpretation unter der Domäne
Selbstausführende Funktion der anonymen Funktion: Definition und Ausführung werden zusammen abgeschlossen
(function(num){})(100);
5. Wenn Sie während der Vorinterpretation auf einen doppelten Namen stoßen, deklarieren Sie ihn nur einmal, ohne wiederholte Deklarationen, aber die Zuweisung muss trotzdem wiederholt werden
Wenn der Name der Variablen und der Name der Funktion in JS Sie werden auch als Duplikate gezählt
Vorerklärung:
var fn; 声明 fn = xxxfff000; [声明]不要了+定义 fn = xxxfff111; [声明]不要了+定义 ->fn=xxxfff111 var fn = 12;//window.fn=12 function fn() {//window.fn=function(){} } function fn() { }
Das Obige habe ich für alle zusammengestellt. Ich hoffe, dass es in Zukunft für alle hilfreich sein wird.
Verwandte Artikel:
Mehrere Methoden zum Löschen eines oder mehrerer Elemente in einem Array mit JsDetails Apropos Eigenschaften und Methoden des integrierten Objekts Math in
js
JSON-Objekt (Bild- und Text-Tutorial, einfach und grob )
Das obige ist der detaillierte Inhalt vonDetaillierte Interpretation der JS-Vorinterpretation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!