


Vertieftes Verständnis des Umfangs und Kontexts von Javascript_Javascript-Kenntnissen
Übersicht
Die Implementierung von Umfang und Kontext in Javascript ist ein einzigartiges Merkmal der Javascript-Sprache. In gewissem Maße ist die Javascript-Sprache sehr flexibel. Funktionen in Javascript können verschiedene Kontexte annehmen und Bereiche können gekapselt und gespeichert werden. Gerade aufgrund dieser Eigenschaften bietet Javascript auch viele nützliche Designmuster. Umfang und Kontext sind jedoch auch Bereiche, in denen Javascript-Programmierer während der Entwicklung häufig verwirrt sind.
Im Folgenden werden Ihnen die Konzepte von Umfang und Kontext in Javascript sowie deren Unterschiede vorgestellt.
Umfang vs. Kontext
Der erste wichtige Punkt ist, dass Umfang und Kontext nicht dieselben Konzepte sind und sich nicht auf dasselbe beziehen. Als Frontend-Freak sehe ich oft Artikel, die diese beiden Konzepte verwechseln. Daher werden einige Dinge immer weniger klar, je mehr ich sie lese. Diese beiden Konzepte scheinen seit langem verwechselt zu sein. Daher habe ich viele Informationen überprüft und diese beiden Konzepte kurz erläutert. :stuck_out_tongue_closed_eyes:
Wenn in Javascript eine Funktion aufgerufen wird, sind ein Bereich und ein Kontext an die Funktion gebunden. Grundsätzlich ist der Umfang funktionsbasiert und der Kontext objektbasiert. Mit anderen Worten: Der Gültigkeitsbereich bezieht sich auf den Zugriff auf Variablen innerhalb einer Funktion, wenn die Funktion aufgerufen wird. Der Kontext bezieht sich normalerweise auf den Wert des Schlüsselworts „this“, das eine Referenz auf das Objekt ist, das den aktuell ausgeführten Code besitzt.
Variabler Umfang
Variablen können im lokalen oder globalen Bereich definiert werden und werden als lokale Variablen bzw. globale Variablen bezeichnet. Globale Variablen beziehen sich auf außerhalb der Funktion deklarierte Variablen. Auf globale Variablen kann überall im Programm zugegriffen werden. Lokale Variablen beziehen sich auf Variablen, die im Funktionskörper definiert sind. Auf sie kann nur innerhalb des Funktionskörpers oder in verschachtelten Funktionen zugegriffen werden, der Zugriff außerhalb der Funktion ist nicht möglich.
Javascript unterstützt derzeit keinen Bereich auf Blockebene (Variablen, die in if-, switch-, for- usw.-Anweisungen definiert sind). Dies bedeutet, dass auf innerhalb eines Blocks definierte Variablen auch außerhalb des Blocks zugegriffen werden kann. In ES6 können wir jedoch den Bereich auf Blockebene mithilfe des Schlüsselworts „let“ definieren.
Bezüglich des Inhalts des Umfangs können Sie andere Informationen überprüfen. Dieser Teil des Inhalts ist relativ einfach.
„dieser“ Kontext
Der Kontext hängt normalerweise davon ab, wie die Funktion aufgerufen wird. Wenn eine Funktion als Methode für ein Objekt aufgerufen wird, bezieht sich „this“ auf das Objekt, für das die Funktion aufgerufen wurde.
var obj={
foo:function (){
console.log(this === obj);
}
};
obj.foo(); //Ausgabe true
Wenn wir zum Erstellen eines neuen Objekts das Schlüsselwort „new“ verwenden, bezieht sich dies gleichermaßen auf das neu erstellte Objekt.
Funktion foo(){
console.log(this);
}
foo(); //Ausgabefenster
var obj=new foo(); //Ausgabe foo {}
Zu beachten ist, dass sich beim Aufruf einer Funktion im globalen Bereich auf das globale Objekt bezieht, das sich in der Browserumgebung auf das Fenster bezieht. Wenn der Code jedoch im strikten Modus ausgeführt wird, wird „this“ auf „undefiniert“
gesetzt Ausführungskontext
Javascript ist eine Single-Threaded-Sprache, was bedeutet, dass Javascript, wenn es im Browser ausgeführt wird, jeweils nur eine Sache ausführen kann und andere Dinge in der Methode in die Warteschlange gestellt werden und auf die Verarbeitung warten.
1. Wenn die Javascript-Codedatei vom Browser geladen wird, ist der neueste Eintrag standardmäßig ein globaler Ausführungskontext. Wenn eine Funktion im globalen Kontext aufgerufen wird, tritt das Programm in die aufgerufene Funktion ein, und die Javascript-Engine erstellt einen neuen Ausführungskontext für die Funktion und verschiebt ihn an die Spitze des Ausführungskontextstapels. Der Browser führt immer den Kontext aus, der sich aktuell oben im Stapel befindet. Sobald die Ausführung abgeschlossen ist, wird der Kontext oben im Stapel abgelegt und führt dann den Code im darunter liegenden Kontext aus. Auf diese Weise werden die Kontexte im Stapel nacheinander ausgeführt und vom Stapel entfernt, bis sie zum globalen Kontext zurückkehren.
2. Ein Ausführungskontext kann in zwei Phasen unterteilt werden: Erstellungsphase und Ausführungsphase. In der Erstellungsphase erstellt der JavaScript-Interpreter zunächst ein Variablenobjekt (auch „Aktivierungsobjekt“ genannt). Aktive Objekte bestehen aus Variablen, Funktionsdeklarationen und Parametern. In dieser Phase wird die Gültigkeitsbereichskette der Funktion initialisiert und auch das von dieser referenzierte Objekt bestimmt. Als nächstes folgt die Ausführungsphase, in der der Code interpretiert und ausgeführt wird.
Im Javascript-Code kann es eine beliebige Anzahl von Funktionskontexten geben. Wir wissen bereits, dass der Javascript-Interpreter einen neuen Kontext erstellt und auf alle innerhalb der Funktion deklarierten Variablen zugegriffen werden kann den Umfang der aktuellen Funktion.
3. Durch die obige Erklärung haben wir ein grundlegendes Konzept für den „Ausführungskontext“ der Funktion, aber hier sind alle am meisten verwirrt. Der „Ausführungskontext“ in Javascript bezieht sich hauptsächlich auf den Bereich, nicht auf den „diesen Kontext“, auf den im vierten Abschnitt oben Bezug genommen wird. Es gibt viele ähnliche verwirrende Konzepte in Javascript, aber solange wir das spezifische Objekt verstehen, auf das sich jedes Konzept bezieht, werden wir nicht mehr verwirrt sein. Daher hoffe ich auch, dass jeder wirklich zwischen „Ausführungskontext“ und „diesem Kontext“ unterscheiden kann ".
In einem einfachen Satz ist der Ausführungskontext ein Konzept, das sich auf den Umfang bezieht, auch wenn dies möglicherweise nicht streng ist.
Scope-Kette
Für jeden Ausführungskontext gibt es einen daran gebundenen Bereich. Die Bereichskette enthält das Ausführungskontextaktivierungsobjekt (was etwas kompliziert klingt) im Ausführungskontextstapel. Die Bereichskette bestimmt den Zugriff auf Variablen und die Auflösung von Bezeichnern.
Codebeispiel:
Funktion zuerst(){
Zweiter();
Funktion second(){
dritte();
Funktionthird(){
four();
Funktion four(){
//Code
}
}
}
}
first();
Führen Sie den obigen Code aus und die verschachtelten Funktionen werden ausgeführt. Was den obigen Code betrifft, wird auch eine Bereichskette gebildet. Die Reihenfolge der Bereichskette von oben nach unten ist: vierter, dritter, zweiter, erster, global. Die vierte Funktion kann auf Variablen im globalen Bereich zugreifen und auf alle Variablen zugreifen, die in den Funktionen dritte, zweite und erste definiert sind.
Zu beachten ist, dass lokale Variablen innerhalb des Funktionskörpers eine höhere Priorität haben als globale Variablen mit demselben Namen. Wenn eine in einer Funktion deklarierte lokale Variable oder eine in einem Funktionsparameter enthaltene Variable denselben Namen wie eine globale Variable hat, wird die globale Variable durch die lokale Variable überschrieben.
Einfach ausgedrückt: Jedes Mal, wenn wir versuchen, auf eine Variable zuzugreifen, sucht das Programm nach der Variablen im Gültigkeitsbereich der aktuellen Funktion. Wenn sie nicht gefunden werden kann, sucht es entlang der Gültigkeitskette bis zur oberen Ebene der Funktion Die Variable wurde gefunden. Wenn sie nicht gefunden werden kann, wird undefiniert zurückgegeben.
Zusammenfassung
In diesem Artikel werden die verwandten Konzepte von Kontext und Umfang in Javascript vorgestellt. Es gibt auch mehrere weitere wichtige Konzepte in Javascript, wie z. B. Schließungen usw. Wenn Sie diese in Zukunft verstehen, werden Sie einen Artikel schreiben~~

Die Verschiebung von C/C zu JavaScript erfordert die Anpassung an dynamische Typisierung, Müllsammlung und asynchrone Programmierung. 1) C/C ist eine statisch typisierte Sprache, die eine manuelle Speicherverwaltung erfordert, während JavaScript dynamisch eingegeben und die Müllsammlung automatisch verarbeitet wird. 2) C/C muss in den Maschinencode kompiliert werden, während JavaScript eine interpretierte Sprache ist. 3) JavaScript führt Konzepte wie Verschlüsse, Prototypketten und Versprechen ein, die die Flexibilität und asynchrone Programmierfunktionen verbessern.

Unterschiedliche JavaScript -Motoren haben unterschiedliche Auswirkungen beim Analysieren und Ausführen von JavaScript -Code, da sich die Implementierungsprinzipien und Optimierungsstrategien jeder Engine unterscheiden. 1. Lexikalanalyse: Quellcode in die lexikalische Einheit umwandeln. 2. Grammatikanalyse: Erzeugen Sie einen abstrakten Syntaxbaum. 3. Optimierung und Kompilierung: Generieren Sie den Maschinencode über den JIT -Compiler. 4. Führen Sie aus: Führen Sie den Maschinencode aus. V8 Engine optimiert durch sofortige Kompilierung und versteckte Klasse.

Zu den Anwendungen von JavaScript in der realen Welt gehören die serverseitige Programmierung, die Entwicklung mobiler Anwendungen und das Internet der Dinge. Die serverseitige Programmierung wird über node.js realisiert, die für die hohe gleichzeitige Anfrageverarbeitung geeignet sind. 2. Die Entwicklung der mobilen Anwendungen erfolgt durch reaktnative und unterstützt die plattformübergreifende Bereitstellung. 3.. Wird für die Steuerung von IoT-Geräten über die Johnny-Five-Bibliothek verwendet, geeignet für Hardware-Interaktion.

Ich habe eine funktionale SaaS-Anwendung mit mehreren Mandanten (eine EdTech-App) mit Ihrem täglichen Tech-Tool erstellt und Sie können dasselbe tun. Was ist eine SaaS-Anwendung mit mehreren Mietern? Mit Multi-Tenant-SaaS-Anwendungen können Sie mehrere Kunden aus einem Sing bedienen

Dieser Artikel zeigt die Frontend -Integration mit einem Backend, das durch die Genehmigung gesichert ist und eine funktionale edtech SaaS -Anwendung unter Verwendung von Next.js. erstellt. Die Frontend erfasst Benutzerberechtigungen zur Steuerung der UI-Sichtbarkeit und stellt sicher, dass API-Anfragen die Rollenbasis einhalten

JavaScript ist die Kernsprache der modernen Webentwicklung und wird für seine Vielfalt und Flexibilität häufig verwendet. 1) Front-End-Entwicklung: Erstellen Sie dynamische Webseiten und einseitige Anwendungen durch DOM-Operationen und moderne Rahmenbedingungen (wie React, Vue.js, Angular). 2) Serverseitige Entwicklung: Node.js verwendet ein nicht blockierendes E/A-Modell, um hohe Parallelitäts- und Echtzeitanwendungen zu verarbeiten. 3) Entwicklung von Mobil- und Desktop-Anwendungen: Die plattformübergreifende Entwicklung wird durch reaktnative und elektronen zur Verbesserung der Entwicklungseffizienz realisiert.

Zu den neuesten Trends im JavaScript gehören der Aufstieg von Typenkripten, die Popularität moderner Frameworks und Bibliotheken und die Anwendung der WebAssembly. Zukunftsaussichten umfassen leistungsfähigere Typsysteme, die Entwicklung des serverseitigen JavaScript, die Erweiterung der künstlichen Intelligenz und des maschinellen Lernens sowie das Potenzial von IoT und Edge Computing.

JavaScript ist der Eckpfeiler der modernen Webentwicklung. Zu den Hauptfunktionen gehören eine ereignisorientierte Programmierung, die Erzeugung der dynamischen Inhalte und die asynchrone Programmierung. 1) Ereignisgesteuerte Programmierung ermöglicht es Webseiten, sich dynamisch entsprechend den Benutzeroperationen zu ändern. 2) Die dynamische Inhaltsgenerierung ermöglicht die Anpassung der Seiteninhalte gemäß den Bedingungen. 3) Asynchrone Programmierung stellt sicher, dass die Benutzeroberfläche nicht blockiert ist. JavaScript wird häufig in der Webinteraktion, der einseitigen Anwendung und der serverseitigen Entwicklung verwendet, wodurch die Flexibilität der Benutzererfahrung und die plattformübergreifende Entwicklung erheblich verbessert wird.


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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft