1. GeltungsbereichVereinfacht ausgedrückt bezeichnet der Gültigkeitsbereich den Bereich in einem Programm, in dem Variablen definiert werden und der die Zugriffsrechte des aktuell ausgeführten Codes auf die Variablen bestimmt. In ES5 gibt es im Allgemeinen nur zwei Bereichstypen:
Nachdem wir das Konzept besprochen haben, schauen wir uns den folgenden Code an: var a = 100 Funktionstest () { var b = a * 2 var a = 200 var c = a/2 console.log(b) console.log(c) } test() // Was wird hier ausgedruckt? Analyse:
Es wird also NaN, 100 ausgegeben In ES6 wird ein neuer Blockbereich hinzugefügt Einfach ausgedrückt ist der Bereich innerhalb der geschweiften Klammern // ES5 wenn(wahr) { Variablenname = "Nanjiu" } console.log(Name) // Nanjiu // ES6 wenn(wahr) { lass Alter = 18 } console.log(Alter) // Dies meldet einen Fehler 2. Geltungsbereichskette Beim Zugriff auf eine Variable innerhalb des ausführbaren Codes wird zunächst geprüft, ob die Variable im aktuellen Gültigkeitsbereich vorhanden ist. Wenn dies der Fall ist, wird sofort eine Rückgabe vorgenommen. Wenn nicht, wird im übergeordneten Gültigkeitsbereich gesucht, bis der globale Gültigkeitsbereich gefunden wird. Wir nennen diesen Bereichsverschachtelungsmechanismus 3. Lexikalischer Umfang
Der sogenannte lexikalische Gültigkeitsbereich wird dadurch bestimmt, wo Sie beim Schreiben des Codes die Variablen und Gültigkeitsbereiche schreiben. Das heißt, der lexikalische Gültigkeitsbereich ist ein statischer Gültigkeitsbereich, der beim Schreiben des Codes bestimmt wird. Der Gültigkeitsbereich einer Funktion wird durch den Ort bestimmt, an dem sie deklariert wird, und nicht durch den Ort, an dem sie tatsächlich aufgerufen wird. MDN definiert Closures wie folgt: Eine Funktion wird mit einer Referenz auf ihre Umgebung (lexikalische Umgebung) gebündelt (oder die Funktion wird von Referenzen umgeben). Eine solche Kombination nennt man Mit anderen Worten: Closures ermöglichen Ihnen, von innerhalb einer inneren Funktion auf den Gültigkeitsbereich einer äußeren Funktion zuzugreifen. Wenn in Wir können Folgendes schlussfolgern:
Schauen wir uns zunächst den Code an: var name = "Front-End Nanjiu" Funktion say() { console.log(Name) } sagen() Analyse: Die Funktion Im Buch „Javascript Definitive Guide“ gibt es einen Satz: Streng genommen sind alle Dies ist jedoch nur ein theoretischer Verschluss, der sich von dem unterscheidet, was wir normalerweise verwenden. Das obige Beispiel ist nur ein einfacher Abschluss. ECMAScript definiert Closures wie folgt:
Schauen wir uns einen weiteren Codeabschnitt aus dem JavaScript Definitive Guide an: let Umfang = "globaler Umfang" Funktion checkscope(){ let scope = "lokaler Bereich" Funktion f(){ Rückgabebereich } Rückkehr f } lass s = checkscope() s() // Was gibt das zurück? Viele Studenten denken vielleicht, dass es sich um
Grundlegende Regeln zum Gültigkeitsbereich: 5. Anwendung der Schließung
6. Die Mängel von Verschlüssen
7. Häufig gestellte Fragen zum Abschlussgesprächvar arr = [] für(var i=0;i<3;i++){ arr[i] = Funktion(){ Konsole.log(i) } } arr[0]() // 3 arr[1]() // 3 arr[2]() // 3 // Hier ist i während der Ausführung zu 3 geworden // Mit Closure lösen var arr = [] für(var i=0;i<3;i++){ arr[i] = (Funktion(i){ Rückgabefunktion(){ Konsole.log(i) } })(ich) } arr[0]() // 0 arr[1]() // 1 arr[2]() // 2 Dies ist das Ende dieses Artikels über Javascript-Umfang und -Abschlussdetails. Weitere Informationen zu Javascript-Umfang und -Abschluss 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:
|
<<: Detaillierte Erläuterung des Lernens von CSS-Zählerattributen
>>: Docker stop stoppt/remove löscht alle Container
React-Native-Installationsprozess 1.npx react-nat...
Notieren Sie den Fehler, der mich heute den ganze...
Verknüpfung: https://qydev.weixin.qq.com/wiki/ind...
Anwendung von HTML und CSS in Flash: Ich habe zufä...
Es ist sehr einfach, Daten und Tabellen in MySQL ...
Die Leistung Ihrer Website oder Ihres Dienstes hä...
/******************** * Zeichengerätetreiber*****...
1. Nachfrage Das Backend stellt solche Daten bere...
Die Riddle-Sicherheitslücke, die auf die MySQL-Ve...
In diesem Artikel wird der spezifische Code für d...
Inhaltsverzeichnis 1. Benutzerdefinierte Anweisun...
Gegeben: Ein Array [1,8,5,4,3,9,2], schreiben Sie...
Apache Tika ist eine Bibliothek zur Dateityperken...
1. Docker auf dem Server installieren yum install...
Im Projekt gibt es eine Tabelle, die online bearb...