suchen
HeimWeb-Frontendjs-TutorialZusammenfassung der grundlegenden JavaScript-Kenntnisse (9) Hervorragende Erklärung des Bereichs und der Bereichskette

Dieses Mal bringe ich Ihnen eine Zusammenfassung der Grundkenntnisse von JavaScript. Es gibt insgesamt elf Wissenspunkte. Umfang und Umfangskette. Werfen wir einen Blick darauf.

Ausarbeitung des Geltungsbereichs

[[Geltungsbereich]]: Jede JavaScript-Funktion ist ein Objekt. Es gibt einige Eigenschaften im Objekt, auf die wir zugreifen können, auf andere jedoch nicht. Diese Eigenschaften sind nur für die JavaScript-Engine zugänglich, und [[scope]] ist eine davon.

[[scope]] bezieht sich auf das, was wir einen Bereich nennen, der eine Sammlung von Laufzeitkontexten speichert.

Scope-Kette: Der in [[scope]] gespeicherte Ausführungskontext. Eine Sammlung von Objekten. Diese Sammlung ist in einer Kette verknüpft. Wir nennen dieses Kettenglied eine Bereichskette

Laufzeitkontext: Wenn eine Funktion ausgeführt wird, wird ein internes sogenanntes Ausführungsobjekt erstellt. Ein Ausführungskontext definiert die Umgebung, in der eine Funktion ausgeführt wird. Der entsprechende Ausführungskontext ist bei jeder Ausführung einer Funktion eindeutig. Daher führt der mehrmalige Aufruf einer Funktion zur Erstellung mehrerer Ausführungskontexte Ausführungskontext wird zerstört

Suchvariablen: Suche von oben in der Bereichskette nach unten

function a() {    function b(){        var b = 234;
    }    
    var a = 123;
    b();
}var glob = 100;
a();

Schauen wir uns zunächst die obige Funktion an. Dies ist eine Gesamtfunktion Im globalen Bereich gibt es unten die Variable glob, und dann gibt es die Ausführung von a; Schritt 1: Was das System zunächst sieht, muss die Definition von a sein. Es gibt diesen [[Umfang]] .

a
/
[[scope]]    
scope指向scope chain
scope chain
scope指向这里


0 Die 0 an dieser Position zeigt auf GO


Globales Objekt

0 zeigt auf Die Tabelle ist

this    window    
window    (object)    
document    (object)    
a    (function)    
glob    100    
[[scope]]里面有这个全局的执行期上下文,然后a被执行了,a被执行,a产生的这个AO,把自己的AO存到作用域链的最顶端,形成一个新的作用域链,现在的a的[[scope]]和刚才的那个[[scope]]不一样了
a
/
[[scope]]
scope指向scope chain
scope chain
scope指向这里


0 Die 0 an dieser Position zeigt auf AO

1 Die 0 an dieser Position zeigt auf GO


Aktivierungsobjekt

0 Punkte auf diese Tabelle

1 Punkte auf diese Tabelle
this    window    
arguents    []    
a    123    
b    (function)    
Global Object

Der einzige Unterschied besteht darin, dass der darin gespeicherte Wert immer noch derselbe ist greifen auf den [[Bereich]] von a zu, der aus dem [[Bereich] von a“ stammt. Diese Bibliothek speichert eine Bereichskette mit verschiedenen darin hängenden Variablen Dabei suche ich von oben nach unten.
this    window    
window    (object)    
document    (object)    
a    (function)    
glob    100

Dann führt die Ausführung von a dazu, dass b definiert wird, nachdem b ausgeführt wurde. Wenn b definiert ist, gibt es einen natürlichen [[Bereich]], und es gibt einen in [[Bereich ]]. Es sollte eine Bereichskette haben, aber die Bereichskette unterscheidet sich von der von a. Wenn a definiert ist, befindet es sich im globalen Bereich und die einzigen Attribute, auf die zugegriffen werden kann, sind sein eigenes AO und das globale GO . Aber b ist in einer Funktion definiert, sodass der [[Bereich]] von b nicht nur auf seinen eigenen AO zugreifen kann, sondern auch auf den AO von a, und der globale GO

Bereich zeigt auf die Bereichskette
b
/
[[scope]]


Scope-Kette

Scope-Punkte hier


0 Die 0 an dieser Position zeigt auf sich selbst

1 Die 1 an dieser Position zeigt auf den AO eines

2 Die 0 an dieser Position zeigt auf GO


Aktivierungsobjekt

0 Punkte auf diese Tabelle

1 Punkte auf diese Tabelle
this    window    
arguents    []    
b    234;    
Activation  Object

1 Punkte auf diese Tabelle
this    window    
arguents    []    
a    123    
b    (function)    
Global Object

Scope Destroy
this    window    
window    (object)    
document    (object)    
a    (function)    
glob    100

Nachdem b ausgeführt wurde, wird sein eigenes ao zerstört, in den Definitionszustand zurückgekehrt und auf die nächste Ausführung gewartet

Da b der letzte Satz der Funktion a ist, also nach der Ausführung von b, a wird ebenfalls zerstört, sodass der [[Bereich]] von b ebenfalls zerstört wird, in den Definitionszustand zurückkehrt und auf die nächste Ausführung wartet

, sodass die externe Funktion nicht auf interne Funktion
//例子function a() {    function b() {        function c(){
            
        }
        c();
    }
    b();
}
a();
a defined a.[[scope]] --> 0:GOa doing   a.[[scope]] --> 0:a的AO
                          1:GO
                          b defined b.[[scope]] --> 0:a的AO
                          1:GOb doing   b.[[scope]] --> 0:自己的AO
                          1:a的AO 
                          2:GO
                          c defined c.[[scope]] --> 0:a的AO
                          1:c的AO 
                          2:GOc doing   c.[[scope]] --> 0:自己的AO
                          1:b的AO
                          2:a的AO
                          3:GO
Attribute und Werte

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Verwandte Lektüre:

Zusammenfassung der grundlegenden JavaScript-Kenntnisse (6) Funktionen, anfänglicher Umfang (Teil 2)


Grundlagen Zusammenfassung der JavaScript-Kenntnisse (7) Rekursion


Zusammenfassung der grundlegenden JavaScript-Kenntnisse (8) Ausführungsprozess vor der Kompilierung

Das obige ist der detaillierte Inhalt vonZusammenfassung der grundlegenden JavaScript-Kenntnisse (9) Hervorragende Erklärung des Bereichs und der Bereichskette. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Ist JavaScript in C geschrieben? Prüfung der BeweiseIst JavaScript in C geschrieben? Prüfung der BeweiseApr 25, 2025 am 12:15 AM

Ja, der Motorkern von JavaScript ist in C. 1) Die C -Sprache bietet eine effiziente Leistung und die zugrunde liegende Steuerung, die für die Entwicklung der JavaScript -Engine geeignet ist. 2) Die V8-Engine als Beispiel wird sein Kern in C geschrieben, wobei die Effizienz und objektorientierte Eigenschaften von C kombiniert werden.

JavaScripts Rolle: das Web interaktiv und dynamisch machenJavaScripts Rolle: das Web interaktiv und dynamisch machenApr 24, 2025 am 12:12 AM

JavaScript ist das Herzstück moderner Websites, da es die Interaktivität und Dynamik von Webseiten verbessert. 1) Es ermöglicht die Änderung von Inhalten, ohne die Seite zu aktualisieren, 2) Webseiten durch DOMAPI zu manipulieren, 3) Komplexe interaktive Effekte wie Animation und Drag & Drop, 4) die Leistung und Best Practices optimieren, um die Benutzererfahrung zu verbessern.

C und JavaScript: Die Verbindung erklärteC und JavaScript: Die Verbindung erklärteApr 23, 2025 am 12:07 AM

C und JavaScript erreichen die Interoperabilität durch WebAssembly. 1) C -Code wird in das WebAssembly -Modul zusammengestellt und in die JavaScript -Umgebung eingeführt, um die Rechenleistung zu verbessern. 2) In der Spieleentwicklung kümmert sich C über Physik -Engines und Grafikwiedergabe, und JavaScript ist für die Spiellogik und die Benutzeroberfläche verantwortlich.

Von Websites zu Apps: Die verschiedenen Anwendungen von JavaScriptVon Websites zu Apps: Die verschiedenen Anwendungen von JavaScriptApr 22, 2025 am 12:02 AM

JavaScript wird in Websites, mobilen Anwendungen, Desktop-Anwendungen und serverseitigen Programmierungen häufig verwendet. 1) In der Website -Entwicklung betreibt JavaScript DOM zusammen mit HTML und CSS, um dynamische Effekte zu erzielen und Frameworks wie JQuery und React zu unterstützen. 2) Durch reaktnatives und ionisches JavaScript wird ein plattformübergreifendes mobile Anwendungen entwickelt. 3) Mit dem Elektronenframework können JavaScript Desktop -Anwendungen erstellen. 4) Node.js ermöglicht es JavaScript, auf der Serverseite auszuführen und unterstützt hohe gleichzeitige Anforderungen.

Python gegen JavaScript: Anwendungsfälle und Anwendungen verglichenPython gegen JavaScript: Anwendungsfälle und Anwendungen verglichenApr 21, 2025 am 12:01 AM

Python eignet sich besser für Datenwissenschaft und Automatisierung, während JavaScript besser für die Entwicklung von Front-End- und Vollstapel geeignet ist. 1. Python funktioniert in Datenwissenschaft und maschinellem Lernen gut und unter Verwendung von Bibliotheken wie Numpy und Pandas für die Datenverarbeitung und -modellierung. 2. Python ist prägnant und effizient in der Automatisierung und Skripten. 3. JavaScript ist in der Front-End-Entwicklung unverzichtbar und wird verwendet, um dynamische Webseiten und einseitige Anwendungen zu erstellen. 4. JavaScript spielt eine Rolle bei der Back-End-Entwicklung durch Node.js und unterstützt die Entwicklung der Vollstapel.

Die Rolle von C/C bei JavaScript -Dolmetschern und CompilernDie Rolle von C/C bei JavaScript -Dolmetschern und CompilernApr 20, 2025 am 12:01 AM

C und C spielen eine wichtige Rolle in der JavaScript -Engine, die hauptsächlich zur Implementierung von Dolmetschern und JIT -Compilern verwendet wird. 1) C wird verwendet, um JavaScript -Quellcode zu analysieren und einen abstrakten Syntaxbaum zu generieren. 2) C ist für die Generierung und Ausführung von Bytecode verantwortlich. 3) C implementiert den JIT-Compiler, optimiert und kompiliert Hot-Spot-Code zur Laufzeit und verbessert die Ausführungseffizienz von JavaScript erheblich.

JavaScript in Aktion: Beispiele und Projekte in realer WeltJavaScript in Aktion: Beispiele und Projekte in realer WeltApr 19, 2025 am 12:13 AM

Die Anwendung von JavaScript in der realen Welt umfasst Front-End- und Back-End-Entwicklung. 1) Zeigen Sie Front-End-Anwendungen an, indem Sie eine TODO-Listanwendung erstellen, die DOM-Operationen und Ereignisverarbeitung umfasst. 2) Erstellen Sie RESTFUFFUPI über Node.js und express, um Back-End-Anwendungen zu demonstrieren.

JavaScript und das Web: Kernfunktionalität und AnwendungsfälleJavaScript und das Web: Kernfunktionalität und AnwendungsfälleApr 18, 2025 am 12:19 AM

Zu den Hauptanwendungen von JavaScript in der Webentwicklung gehören die Interaktion der Clients, die Formüberprüfung und die asynchrone Kommunikation. 1) Dynamisches Inhaltsaktualisierung und Benutzerinteraktion durch DOM -Operationen; 2) Die Kundenüberprüfung erfolgt vor dem Einreichung von Daten, um die Benutzererfahrung zu verbessern. 3) Die Aktualisierung der Kommunikation mit dem Server wird durch AJAX -Technologie erreicht.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor