Neue Blockbereichsfunktion von JavaScript ES

Neue Blockbereichsfunktion von JavaScript ES

Vorwort:

Bevor wir uns mit dem Blockebenenbereich befassen, müssen wir uns mit dem Umfang vertraut machen. Der sogenannte Umfang ist der Bereich, innerhalb dessen ein Mitglied im Code arbeitet.

1. Was ist Blockbereich?

Der sogenannte Blockebenenbereich bedeutet, dass die Variable nur in dem Codeblock oder Untercodeblock verwendet werden kann, in dem sie deklariert ist. In Versionen vor ECMAScript 2015 gibt es keinen Blockebenenbereich. ECMAScript 2015 bietet das Schlüsselwort let, das den Blockebenenbereich in JavaScript aktiviert. Der Beispielcode lautet wie folgt:

/*
 * Im Bereich auf Blockebene kann nur das Schlüsselwort let verwendet werden. * Das Schlüsselwort let kann nicht nur den Bereich auf Blockebene deklarieren, sondern auch im globalen Bereich und im Funktionsbereich verwendet werden. * /
// Globaler Gültigkeitsbereich let a = 100; // Globale Variablen (Funktion () {
  // Funktionsumfang let b = 200; // lokale Variable })()
wenn (wahr) {
  // Blockbereich let c = 300; // lokale Variable }
konsole.log(a); // 100
console.log(b); // wirft eine Ausnahme console.log(c); // wirft eine Ausnahme

2. Warum brauchen wir Blockbereich?

ECMAScript 5 hat nur einen globalen Gültigkeitsbereich und Funktionsumfang, aber keinen Blockgültigkeitsbereich. Diese Situation wirft einige Probleme auf:

Lokale Variablen können globale Variablen überschreiben

var v = 100;
(Funktion(){
  console.log(v); // undefiniert 
  var v = 200;
})


Die zum Zählen im Schleifenkörper verwendete Variable wird als globale Variable weitergegeben.

// Definiere einen Schleifenkörper für (var v = 0; v < 10; v++) {
  console.log("Dies ist eine For-Schleife"); // Dies ist eine For-Schleife * 10
}
konsole.log(v); // 10

Wenn die Variable nach Abschluss der Schleife nicht manuell freigegeben wird, bleibt ihr Lebenszyklus mit dem Skript bestehen und belegt Speicher.

3. Mit Funktionsdeklaration

ECMAScript5 Standard legt fest, dass Funktionen nur im globalen Gültigkeitsbereich und im Funktionsbereich deklariert werden können, nicht jedoch im Blockgültigkeitsbereich.

Fall 1:

wenn (wahr) {
  Funktion f() {}
}


Fall 2:

versuchen {
  Funktion f() {}
} Fang(e) {
  // ...
}

Die beiden oben genannten Funktionsdeklarationen sind laut ECMAScript5 unzulässig.

ECMAScript 2015 Standard legt fest, dass das Deklarieren einer Funktion in einem Blockebenenbereich der Verwendung des Schlüsselworts var ähnelt, was bedeutet, dass außerhalb des aktuellen Blockebenenbereichs nicht darauf zugegriffen werden kann.

{
  Funktion Spaß() {
    console.log('das macht Spaß');
  }
}
spaß(); // das macht Spaß
// Das Obige ist äquivalent zu der folgenden Funktion {
  var fn = Funktion () {
    console.log('das ist fn');
  }
}
fn(); // das ist fn
// Wenn Sie das Schlüsselwort let verwenden, können Sie außerhalb des Blockbereichs nicht darauf zugreifen {
  lass f = Funktion () {
    console.log('das ist f');
  }
}
f(); // Löst eine Ausnahmebeschreibung von ReferenceError aus: f ist nicht definiert

Dies ist das Ende dieses Artikels über die neue Block-Level-Scope-Funktion von JavaScript ES . Weitere Informationen zur neuen Block-Level-Scope-Funktion von ES finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • JavaScript-Grundlagen: Geltungsbereich
  • 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

<<:  Lösung zur Definition der Mindestspannweite hat keine Auswirkung

>>:  Einführung in häufig verwendete Schriftarten im Web (Schriftarten, die von iOS- und Android-Browsern unterstützt werden)

Artikel empfehlen

Tutorial zur Installation von MySQL 8.0.11 unter Linux

1. Gehen Sie zur offiziellen Website, um das Inst...

Detaillierte Konfiguration von Nginx, das sowohl Http als auch Https unterstützt

Heutzutage gehört die Unterstützung von HTTPS für...

Vue + ElementUI implementiert Paging-Funktion - MySQL-Daten

Inhaltsverzeichnis 1. Problem 2. Lösung 2.1 Pagin...

Vue implementiert das Umschalten des Anmeldetyps

In diesem Artikelbeispiel wird der spezifische Co...

Teilen Sie 101 MySQL-Debugging- und Optimierungstipps

MySQL ist eine leistungsstarke Open-Source-Datenb...

Detaillierte Erklärung der Zeichensätze und Validierungsregeln in MySQL

1Mehrere gängige Zeichensätze Zu den gängigsten Z...

Warum ist es langsam, wenn Limit- und Offset-Paging-Szenarien verwendet werden?

Beginnen wir mit einer Frage Als ich vor fünf Jah...

Detaillierte Installationsschritte für MySQL 8.0.11

In diesem Artikel werden die Installationsschritt...

So installieren Sie den Kibana-Tokenizer im Docker-Container

Schritt: 1. Erstellen Sie eine neue Datei docker-...

Lösung für 1067, wenn Mysql in Windows startet

Ich habe erst vor ein paar Tagen mit der Arbeit b...