Ich benötige einige globale Variablen, die ich in allen .js
Dateien benötige .
Betrachten Sie beispielsweise die folgenden 4 Dateien:
global.js
js1.js
js2.js
js3.js
Gibt es eine Möglichkeit, 3 globale Variablen zu deklarieren global.js
und in einer der anderen 3 .js
Dateien darauf zuzugreifen, wenn ich alle oben genannten 4 Dateien in ein HTML-Dokument lade?
Kann mir bitte jemand sagen, ob dies möglich ist oder ob es eine Lösung gibt, um dies zu erreichen?
Der empfohlene Ansatz ist:
Sie können dann mit einer beliebigen Funktion darauf zugreifen:
Dieser Ansatz wird aus zwei Gründen bevorzugt.
Die Absicht ist explizit. Die Verwendung des
var
Schlüsselworts kann leicht dazu führen,vars
dass global deklariert wird , die lokal sein sollten, oder umgekehrt. Diese Art des variablen Scoping ist für viele Javascript-Entwickler ein Punkt der Verwirrung. Daher stelle ich in der Regel sicher, dass allen Variablendeklarationen das Schlüsselwortvar
oder das Präfix vorangestellt istwindow
.Sie standardisieren diese Syntax auch für das Lesen der Variablen auf diese Weise, was bedeutet, dass ein lokaler Gültigkeitsbereich
var
nicht den globalen Bereich beeinträchtigtvar
oder umgekehrt. Zum Beispiel ist das, was hier passiert, nicht eindeutig:Dies ist jedoch viel sauberer und weniger fehleranfällig (Sie müssen sich nicht wirklich an alle Regeln für den variablen Gültigkeitsbereich erinnern):
quelle
Hast du es versucht?
Wenn Sie tun:
In
global.js
. Und dann mache:Darin
js1.js
wird es gut alarmieren. Sie müssen nurglobal.js
vor dem Rest in das HTML-Dokument aufnehmen.Der einzige Haken ist, dass Sie es im Bereich des Fensters deklarieren müssen (nicht innerhalb von Funktionen).
Sie könnten das
var
Teil einfach nixen und auf diese Weise erstellen, aber es ist keine gute Praxis.quelle
Wie oben erwähnt, gibt es Probleme bei der Verwendung des obersten Bereichs in Ihrer Skriptdatei. Hier ist ein weiteres Problem: Die Skriptdatei wird möglicherweise in einem Kontext ausgeführt, der in einer Laufzeitumgebung nicht der globale Kontext ist.
Es wurde vorgeschlagen, das Globale
window
direkt zuzuweisen . Dies ist jedoch auch zur Laufzeit abhängig und funktioniert nicht in Node usw. Dies zeigt, dass die Verwaltung tragbarer globaler Variablen einige sorgfältige Überlegungen und zusätzlichen Aufwand erfordert. Vielleicht werden sie es in zukünftigen ECMS-Versionen beheben!Im Moment würde ich so etwas empfehlen, um eine ordnungsgemäße globale Verwaltung für alle Laufzeitumgebungen zu unterstützen:
Es ist ein bisschen mehr Tipparbeit, aber es macht Ihr globales Variablenmanagement zukunftssicher.
Haftungsausschluss: Ein Teil dieser Idee kam mir, als ich mir frühere Versionen von stacktrace.js ansah .
Ich denke, man kann auch Webpack oder andere Tools verwenden, um eine zuverlässigere und weniger hackige Erkennung der Laufzeitumgebung zu erhalten.
quelle
GLOBAL
ist jetzt veraltet undglobal
sollte stattdessen verwendet werden.Ja, Sie können darauf zugreifen. Sie sollten sie im "öffentlichen Raum" (außerhalb aller Funktionen) wie folgt deklarieren:
Sie können später auch in anderen Dateien darauf zugreifen.
quelle