JavaScript-Grundlagen: Geltungsbereich

JavaScript-Grundlagen: Geltungsbereich

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.

Umfang

Der 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;
}

Bildbeschreibung hier einfügen

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 Umfang

Einfach 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)

Bildbeschreibung hier einfügen

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")
   }
     
}
 

Bildbeschreibung hier einfügen

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.

Funktionsumfang

Der 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);
 }

Bildbeschreibung hier einfügen

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ährend

Bedingte 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);
}

Bildbeschreibung hier einfügen

Versuchen Sie daher, bedingte Anweisungen und logische Schleifen nicht im globalen Bereich zu verwenden. Weil die Variablen im Methodenkörper andere Daten beeinflussen.

Blockumfang

Das Auftreten des Blockbereichs erfordert im Allgemeinen eines der beiden Schlüsselwörter let oder const, sonst existiert der Blockbereich nicht.

Bildbeschreibung hier einfügen

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)
    }
     
}

Bildbeschreibung hier einfügen

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

Umfangskette

Dieses 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);
}
 

Bildbeschreibung hier einfügen

Übrigens ist die Suchlogik der Bereichskette tatsächlich dieselbe wie die der Prototypkette. Wir werden später weiter darüber sprechen.

Zusammenfassen

Dieser 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:
  • Neue Blockbereichsfunktion von JavaScript ES
  • Fortgeschrittene JavaScript-Programmierung: Variablen und Umfang
  • Grafische Erklärung des zugrunde liegenden Prinzips der JavaScript-Bereichskette
  • Statischer und dynamischer Gültigkeitsbereich von JavaScript anhand von Beispielen erklärt
  • Javascript-Bereich und Abschlussdetails
  • Synchrone und asynchrone JS-Schwierigkeiten sowie Umfang und Abschluss und detaillierte Erklärung von Prototypen und Prototypenketten
  • Eine kurze Diskussion über den JavaScript-Bereich

<<:  css3-Animation, Ballrollen, js-Steuerung, Animationspause

>>:  Webseite WB.ExecWB - Beschreibung des Aufrufs der Druckmethode und Einführung in die Parameter

Artikel empfehlen

Importieren Sie die CSV-Datei mit Navicat in MySQL

In diesem Artikel wird der spezifische Code zum I...

CentOS 7-Methode zum Ändern des Gateways und Konfigurieren des IP-Beispiels

Wählen Sie bei der Installation der CentOS7-Versi...

Detaillierte Erklärung zur Installation der PHP-Curl-Erweiterung unter Linux

Dieser Artikel beschreibt, wie man die PHP-Curl-E...

Empfohlene 20 besten kostenlosen englischen Handschrift-Schriftarten

Jellyka BeesAntike Handschrift [Ank]* Jellyka Cutt...

Detailliertes Tutorial zur Installation von MySQL unter Linux

1. Beenden Sie den MySQL-Dienst # service mysqld ...

Beispielcode für einen coolen Atemeffekt mit CSS3+JavaScript

Ein einfacher cooler Effekt, der mit CSS3-Animati...

Mehrere Methoden zum Ausführen von SQL-Dateien unter der MySQL-Befehlszeile

Inhaltsverzeichnis Die erste Methode: Wenn die My...

Lösung für Nginx-Installationsfehler

1. Entpacken Sie nginx-1.8.1.tar.gz 2. Entpacken ...

So verschieben Sie den Datenspeicherort von mysql5.7.19 in Centos7

Szenario: Mit zunehmender Datenmenge ist die Fest...