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

Lösungen für ungültige Nullsegmentbeurteilungen und IFNULL()-Fehler in MySql

MySql Nullfeldbeurteilung und IFNULL-Fehlerverarb...

HTML + CSS + JS realisiert den Scroll-Gradienteneffekt der Navigationsleiste

Inhaltsverzeichnis Erster Blick auf die Wirkung: ...

Grafisches Tutorial zur Installation von JDK1.8 unter CentOS7.4

Schritte zur Linux-Installation von JDK1.8 1. Übe...

MySQL-Daten einfügen, aktualisieren und löschen Details

Inhaltsverzeichnis 1. Einfügen 2. Aktualisierung ...

Vue-Direktiven v-html und v-text

Inhaltsverzeichnis 1. Anweisungen zum Rendern von...

Analyse des Prozesses zum Aufbau einer Clusterumgebung mit Apache und Tomcat

Tatsächlich ist es nicht schwierig, einen Apache-...

Grundlegende Syntax und Funktionsweise der MySQL-Datenbank

Grundlegende Syntax der MySQL-Datenbank DDL-Opera...

Referenz zur Webseitenerstellung im IE6 - Standardstil im IE6

Dies ist eigentlich kein offizielles Dokument des ...

Zusammenfassung häufig verwendeter CSS-Kapselungsmethoden

1. PC-Reset Initialisierung im PC-Stil /* normali...