Dieser Artikel stellt hauptsächlich das tiefgreifende Verständnis der linken und rechten Abfrage in JavaScript vor. Jetzt werde ich es mit Ihnen teilen und als Referenz geben. Folgen wir dem Herausgeber, um einen Blick darauf zu werfen
Werte und Referenzen
Geltungsbereich
Im engeren Sinne ist Scope ein Objekt (genauer gesagt sollte es eine Sammlung sein);
Im weitesten Sinne Sinn, Bereich ist eine Reihe von Regeln zum Speichern von Variablen und zum einfachen Auffinden dieser Variablen
Der Bereich ist für das Sammeln und Verwalten des Bereichs verantwortlich bestehend aus allen deklarierten Bezeichnern. Eine Reihe von Abfragen und die Durchsetzung eines sehr strengen Regelsatzes, der die Zugriffsrechte des aktuell ausgeführten Codes auf diese Bezeichner bestimmt.
Vorbereitung vor der Ausführung des Codes (globaler Code, Funktionskörper, Evaluierungscode):
1. Förderung (variabler Funktionsausdruck)
2 >
3. Verbunden mit dem entsprechenden Bereich;Die Beziehung zwischen Geltungsbereich und Ausführungskontext:
Ein Geltungsbereich kann mehrere Kontexte enthalten. Es ist möglich, dass es nie einen Kontext gab (die Funktion wurde nie aufgerufen); es ist möglich, dass es einen Kontext gab und dieser nun nach dem Aufruf der Funktion zerstört wird
Links/Rechts-Abfrage
Auf der linken Seite des Zuordnungssymbols, wer ist das Ziel der Zuweisungsoperation;
(function(){ function test(a){ b=a; console.log(b);//2 } test(2); })(); console.log(b);//2
Abfrage nach Variablen außer der linken Seite des Gleichheitszeichens. Wenn in der gesamten Bereichskette keine Deklaration einer Variablen gefunden wird, wird direkt ein ReferenceError-Fehler ausgelöst
Spezielle Rechtsabfrage
console.log(a);//ReferenceError: a is not defined
//a并未定义赋值 console.log(typeof a);//undefined
ReferenceError Ausnahme ist die gleiche. Im Zusammenhang mit dem Scheitern der Bereichsbeurteilung bedeutet TypeError, dass die Bereichsbeurteilung erfolgreich ist, die Operation für das Ergebnis jedoch illegal oder unzumutbar ist.
Strikter Modus:
if(DEBUG){ //在生产环境中会报错 console.log("开始调试"); } if(typeof DEBUG !== "undefined"){ console.log("开始调试"); }
if(typeof polyfill_a === "undefined"){ //注意这一块不需要var,跟变量的提升有关 //这一块需要使用函数表达式而不是函数声明 polyfill_a = function(){ //功能代码 } }
Das obige ist der detaillierte Inhalt vonVertiefendes Verständnis der linken und rechten Abfrage in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!