2015-07-08 11 views
9

Ho letto il numero this, utilizzando la parola chiave delete, è possibile eliminare la variabile JavaScript. Ma quando ho provato le stesse operazioni con costante, ma restituisce false quando provo a eliminare costante. C'è un modo per cancellare le costanti dalla memoria? Ho provato la risposta this ma non funziona.Come disinserire una costante Javascript in ES6?

+0

cosa significa che hai provato questa risposta? cioè - che cosa hai provato esattamente? –

+3

Le costanti sono costanti. Se leggi i collegamenti personali, vedrai che le costanti non sono variabili, quindi non puoi ridefinire/eliminare costanti –

+0

@AdrianPreuss, Esiste un modo per liberare memoria usata dalle costanti? –

risposta

6

Non si può direttamente farlo, guardando le specifiche ci mostrano che il valore può essere impostato, ma non sovrascritto (tale è il standard definition of a constant), tuttavia ci sono un paio di modi un po 'hacky per disattivare i valori costanti.

Utilizzando portata

const è scoped. Definendo la costante in un blocco, esisterà solo per questo blocco.

Impostazione di un oggetto e tasti disinserimento

Definendo const obj = { /* keys */ } definiamo un valore obj che è costante, ma può ancora trattare i tasti come qualsiasi altra variabile, come dimostra the examples nell'articolo MDN. Si potrebbe disinserire una chiave impostandola su null.

Se è il memory management questa è la preoccupazione allora entrambe queste tecniche aiuteranno.

7

L'operatore delete è in realtà per l'eliminazione di una proprietà dell'oggetto , non una variabile. In effetti, in modalità rigorosa, delete foo is a syntax error.

In genere è possibile "eliminare" un valore/oggetto rimuovendo tutti i riferimenti ad esso, ad es. assegnazione di null a una variabile.

Tuttavia, poiché le costanti non sono scrivibili (per definizione), non c'è modo di farlo.

4

Come ho scritto sul mio commento, l'eliminazione può essere utilizzata solo su oggetti e matrici. Allora, che cosa in realtà si può fare è memorizzare tutte le costanti in un oggetto di costante e liberare memoria eliminando le sue proprietà, in questo modo:

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

delete myConstants.height; 
Problemi correlati