2015-07-08 9 views
9

Ich lese this Post, mit delete Schlüsselwort, können wir JavaScript-Variable zu löschen. Aber wenn ich die gleichen Operationen mit Konstante versuchte, aber es wird falsch zurückgegeben, wenn ich versuche, konstant zu löschen. Gibt es eine Möglichkeit, Konstanten aus dem Speicher zu löschen? Ich versuchte this Antwort, aber es funktioniert auch nicht.Wie lösche ich eine Javascript-Konstante in ES6?

+0

Was bedeutet, dass Sie diese Antwort versucht haben? das ist - was genau hast du probiert? –

+3

Konstanten sind Konstanten. Wenn Sie Ihre eigenen Links lesen, werden Sie sehen, dass Konstanten keine Variablen sind. Daher können Sie keine Konstanten neu definieren/löschen. –

+0

@AdrianPreuss, Gibt es eine Möglichkeit, den von Konstanten verwendeten Speicher freizugeben? –

Antwort

6

Sie können nicht direkt tun es, auf die Spezifikationen schauen uns zeigen, dass der Wert kann zwar eingestellt, aber nicht überschrieben werden (so ist der standard definition of a constant), jedoch gibt es ein paar etwas hacky Möglichkeiten, konstante Werte zu schärfen.

Anwendungsbereich Mit

const ist scoped. Durch die Definition der Konstante in einem Block existiert sie nur für diesen Block.

ein Objekt Schärfen und Entschärfen Tasten

Durch const obj = { /* keys */ } definieren definieren wir einen Wert obj, die konstant ist, aber wir können immer noch die Schlüssel wie jede andere Variable behandeln, wie durch the examples im MDN Artikel demonstriert. Man könnte einen Schlüssel aufheben, indem man ihn auf null setzt.

Wenn es memory management ist, dann sind diese beiden Techniken hilfreich.

7

Der Operator delete ist eigentlich zum Löschen einer Objekteigenschaft, keine Variable. In der Tat, im strikten Modus, delete foo is a syntax error.

Normalerweise können Sie einen Wert/ein Objekt löschen, indem Sie alle Verweise darauf entfernen, z. Zuweisen einer null zu einer Variablen.

Da Konstanten jedoch nicht beschreibbar sind (per Definition), gibt es keine Möglichkeit, dies zu tun.

4

Wie ich in meinen Kommentar geschrieben habe, kann delete nur für Objekte und Arrays verwendet werden. Also, was Sie tatsächlich tun, ist alle Ihre Konstanten in einem konstanten Objekt und bis freien Speicher durch Löschen es Eigenschaften, wie folgt aus:

const myConstants = {}; 
myConstants.height = 100; 

delete myConstants.height;