Bevor wir über AO und BO sprechen, müssen wir das Konzept des Geltungsbereichs verstehen. Dadurch wird es später einfacher, viele Dinge zu verstehen, beispielsweise worauf dies hinweist. UmfangDer Gültigkeitsbereich ist einfach der Umfang, in dem Variablen, Funktionen und Objekte nach ihrer Definition verfügbar sind. konsole.log(a) { var a = 1; } Funktionstest () { var b=2; } Es ist ersichtlich, dass die Variable b nicht außerhalb verwendet werden kann. Es ist ersichtlich, dass der Bereich Daten vor willkürlichem Zugriff und Änderung durch die Außenwelt schützen kann. Es lässt sich leicht erkennen, dass Bereiche die Variablen gegenseitig isolieren können, d. h. Variablen mit demselben Namen in unterschiedlichen Bereichen geraten nicht in Konflikt. Die wichtigsten und am häufigsten verwendeten Bereiche sind der globale Bereich und der Funktionsbereich. Nach ES6 wurde jedoch aufgrund der Einführung der Schlüsselwörter let und const ein Blockebenenbereich eingeführt. Globaler UmfangEinfach ausgedrückt bedeutet der globale Gültigkeitsbereich, dass alle Domänen auf Variablen und Methodenobjekte innerhalb des Gültigkeitsbereichs zugreifen können. var a="global1"; Funktionstest () { b="Ohne var wird es implizit in eine globale Variable umgewandelt"; window.c="Das direkte Festlegen der Variable c als Fenster macht sie auch global"; var d="nicht-globaler Bereich"; } #Der erste Schritt besteht darin, test() auszuführen test() #Dadurch werden Variablen innerhalb der Methode definiert und Werte zugewiesen. #Schritt 2 console.log(a) console.log(b) console.log(c) konsole.log(d) Im Allgemeinen sind die Eigenschaften von Window globale Variablen, und das Format window.c behandelt c tatsächlich als eine Eigenschaft von Window. Bitte beachten Sie, dass Sie beim Deklarieren von Variablen nicht var verwenden. Es ist besser, var zu verwenden, damit es nicht zu einer globalen Variable hochgestuft wird und dadurch Daten verunreinigt werden. Darüber hinaus ist die Testmethode auch eine globale Methode. Funktionstest () { var a = Funktion(){ console.log("literale Methode") } b = Funktion(){ console.log("Methode ohne Variablenliteral") } Funktion test1(){ console.log("normale Deklarationsmethode") } } Dies zeigt, dass die Methode der wörtlichen Deklaration der Zuweisung einer Funktion zu einer Variablen und deren Behandlung als Variable ähnelt. Dies wurde auch während der Vorkompilierung demonstriert. FunktionsumfangDer Funktionsumfang ist das Gegenteil des globalen Umfangs. Er wird nicht überall verwendet, sondern nur in einem bestimmten Bereich. Im Allgemeinen werden deklarierte Variablen nur innerhalb der Funktion verwendet. Funktionstest () { var a="nicht-globaler Bereich"; konsole.log(a) } Nun gibt es ein weiteres Problem. Variablen innerhalb des Funktionsumfangs können in der globalen Methode verwendet werden. Kann eine Funktion also einen Funktionsumfang haben, der von der darunterliegenden Funktion generiert wird? Und ob ihre Variablen austauschbar sind? Funktionstest () { var a="Testmethodenumfang"; Funktion test1(){ var b="test1 Methodenumfang"; console.log("Wert von a=",a); } # Rufen Sie die Funktion innerhalb der Funktion test1(); auf. console.log("Wert von b=",b); } Hier ist zu erkennen, dass der Bereich mehrschichtig ist. Der innere Bereich kann auf die Variablen des äußeren Bereichs zugreifen, der äußere Bereich kann jedoch nicht auf die inneren Variablen zugreifen. wenn, wechseln, für, währendBedingte Anweisungen und logische Schleifen sind keine Funktionen und verhalten sich nicht wie Funktionen, noch erstellen sie einen neuen Bereich. **Variablen, deren Blöcke definiert sind, bleiben in dem Gültigkeitsbereich, in dem sie existieren. Funktionstest(a){ wenn(a>1){ var b=13; }anders{ var b=1; } console.log(b); } Versuchen Sie daher, bedingte Anweisungen und logische Schleifen nicht im globalen Bereich zu verwenden. Weil die Variablen im Methodenkörper andere Daten beeinflussen. BlockumfangDas Auftreten des Blockbereichs erfordert im Allgemeinen eines der beiden Schlüsselwörter let oder const, sonst existiert der Blockbereich nicht. Funktionstest(a){ const b="23"; wenn (a>2){ Konstante c = 3 console.log("erste Person, wenn---c-----",c) } wenn (a>1){ console.log("Zweite Person wenn----b----",b) console.log("Zweite Person, wenn----c----",c) } } Es ist ersichtlich, dass, wenn die Schlüsselwörter let und const vorhanden sind, der Gültigkeitsbereich der Variablen innerhalb der geschweiften Klammern liegt, in denen sie deklariert ist. Daher kann die Variable c im ersten if nicht im zweiten if erhalten werden. Daraus folgt natürlich immer noch, dass der innere Bereich auf die Variablen des äußeren Bereichs zugreifen kann. Weitere Informationen zu let und const finden Sie im vorherigen Artikel: Adresse UmfangsketteDieses scheinbar magische Konzept lässt sich einfach wie folgt beschreiben: Wenn es innerhalb des Bereichs vorhanden ist, wird es direkt verwendet, und wenn es auf der nächsten Ebene nicht vorhanden ist, wird es beendet, wenn der globale Bereich gefunden wird. var a = 1 var b=3 Funktionstest () { var a = 2 console.log("Wert von a",a); console.log("Wert von b",b); } Übrigens ist die Suchlogik der Bereichskette tatsächlich dieselbe wie die der Prototypkette. Wir werden später weiter darüber sprechen. ZusammenfassenDieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalten auf 123WORDPRESS.COM mehr Aufmerksamkeit schenken können! Das könnte Sie auch interessieren:
|
<<: css3-Animation, Ballrollen, js-Steuerung, Animationspause
>>: Webseite WB.ExecWB - Beschreibung des Aufrufs der Druckmethode und Einführung in die Parameter
Inhaltsverzeichnis Was ist der Restoperator? Wie ...
MySql Nullfeldbeurteilung und IFNULL-Fehlerverarb...
html4: Code kopieren Der Code lautet wie folgt: &...
Inhaltsverzeichnis Erster Blick auf die Wirkung: ...
Inhaltsverzeichnis Szenarioanalyse Entwicklung Zu...
Schritte zur Linux-Installation von JDK1.8 1. Übe...
Inhaltsverzeichnis 1. Einfügen 2. Aktualisierung ...
Inhaltsverzeichnis 1. Anweisungen zum Rendern von...
Tatsächlich ist es nicht schwierig, einen Apache-...
Grundlegende Syntax der MySQL-Datenbank DDL-Opera...
Dies ist eigentlich kein offizielles Dokument des ...
1. PC-Reset Initialisierung im PC-Stil /* normali...
Was ist ZooKeeper ZooKeeper ist ein Top-Level-Pro...
Fragen Sie zuerst die MySQL-Quelle ab Docker-Such...
1. INSERT INTO SELECT-Anweisung Das Anweisungsfor...