


Zusammenfassung 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 Tabellethis window arguents [] a 123 b (function) Global ObjectDer 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 Bereichsketteb / [[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 Tabellethis window arguents [] b 234; Activation Object1 Punkte auf diese Tabelle
this window arguents [] a 123 b (function) Global ObjectScope 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:GOAttribute und WerteVerwandte 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!

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.

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 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.

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 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.

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.

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.

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.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

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
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor
