Deaktivieren einer JavaScript-Variablen
Problem:
Globale Variablen in JavaScript können gesetzt und gesetzt werden Zugriff durch mehrere Skripte. Es kann jedoch vorkommen, dass eine Variable aus dem globalen Bereich entfernt werden muss, um sicherzustellen, dass nachfolgende Skripte ihre Existenz oder ihren Wert nicht erkennen können.
Lösung:
Die Der richtige Ansatz zum Deaktivieren einer JavaScript-Variablen hängt davon ab, wie sie ursprünglich definiert wurde.
1. Mit var definierte Variablen:
Variablen, die mit dem Schlüsselwort var deklariert wurden, können nicht mit dem Löschoperator gelöscht werden. Sie sind dauerhaft mit dem globalen Geltungsbereich verbunden und können nicht entfernt werden.
var globalVar = 1; delete globalVar; // Returns false console.log(globalVar); // Outputs 1
2. Ohne var definierte Variablen:
Variablen, die ohne das Schlüsselwort var erstellt wurden, werden implizit an das globale Objekt (normalerweise Fenster) angehängt. Sie können mit dem Löschoperator deaktiviert werden.
globalVar = 1; delete globalVar; // Returns true console.log(globalVar); // Throws ReferenceError
Technische Erklärung:
Die ECMAScript-Spezifikation definiert zwei Arten von Umgebungen, in denen Variablen gespeichert werden:
Mit var deklarierte Variablen werden in der VariableEnvironment gespeichert, die dem aktuellen Bereich zugeordnet ist. Das Entfernen dieser Variablen erfordert die Ausführung von Code in einem Auswertungskontext, der normalerweise nicht in browserbasierten Umgebungen verwendet wird.
Variablen, die ohne var definiert sind, befinden sich in der verschachtelten LexicalEnvironment. Wenn eine Variable in der aktuellen Umgebung nicht gefunden werden kann, durchsucht JavaScript die übergeordnete Umgebung. Letztendlich wird versucht, eine Eigenschaft vom globalen Objekt abzurufen. Eigenschaften von Objekten können gelöscht werden.
Hinweise:
Das obige ist der detaillierte Inhalt vonWie deaktiviere ich JavaScript-Variablen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!