Is it possible to completely wipe out variable from JavaScript interpreter?
Ja und nein, es ist abhängig von der Variable und wie es erstellt wurde. Sie können eine globale var
oder let
Variable (oder globale const
) nicht entfernen. Für die "Ja" -Fälle, siehe unten.
If yes, how to do that?
Es hängt davon ab, wo die Variable definiert ist:
1) Wenn es eine globale Variable ist, erkläre es nicht mit let
oder var
; Weisen Sie stattdessen eine Eigenschaft des globalen Objekts zu (this
im globalen Gültigkeitsbereich; auch über das globale window
auf Browsern oder global
auf NodeJS zugänglich). Wenn Sie es entfernen möchten, verwenden Sie delete
.
window.foo = "bar";
console.log("foo" in window); // true
console.log(foo); // "bar"
delete window.foo;
console.log("foo" in window); // false
console.log(foo); // ReferenceError: foo is not defined
ich, dass in losen Modus beachten sollte, können Sie auch tun, dass auf The Horror of Implicit Globals, indem sie sich (das ist ein Beitrag auf meinem anämisch kleinen Blog) von nur einem unerklärten Kennung zuweisen:
foo = "bar";
console.log("foo" in window); // true
console.log(foo); // "bar"
delete foo;
console.log("foo" in window); // false
console.log(foo); // ReferenceError: foo is not defined
Aber ... benutzen Sie den strikten Modus, genau aus diesem Grund, also machen Tippfehler es nicht sehr weit. :
2) Wenn es in einer Funktion ist, stellen Sie sicher, dass die Funktion zurückkehrt, ohne irgendwelche Schließungen zu erstellen. Alle seine lokalen Variablen werden dann vollständig entfernt.
Ordnen Sie es einfach "null" zu. 'Löschen' dient zum Löschen von Eigenschaften aus dem Objekt. – Fuross
Nein, es funktioniert nicht, wenn ich null '> foo = null' zuweisen und Variable '> let foo = {}; 'redefinieren will, erhalte ich folgenden Fehler:' SyntaxError: Der Bezeichner' foo 'wurde bereits deklariert ', so ist es nicht vollständig ausgelöscht. – MaciejLisCK
@Fuross: Das Zuweisen von 'null' zu einer Variablen löscht die Variable nicht, sondern nur den Wert 'null'. –