Comment désactiver une constante Javascript dans ES6?

j'ai lu la poste, à l'aide de delete mot-clé, nous pouvons supprimer la variable JavaScript. Mais quand j'ai essayé les mêmes opérations avec constant mais il retourne false quand j'essaie d'effacer constant. Est-il possible de supprimer les constantes de la mémoire? J'ai essayé réponse mais pas de travail.

12
demandé sur Community 2015-07-08 14:33:50

3 réponses

vous ne pouvez pas le faire directement, en regardant les spécifications nous montrer que la valeur peut être définie, mais pas trop écrite (c'est le définition standard d'une constante), cependant il y a quelques façons quelque peu hacky de désactiver les valeurs constantes.

Utilisation de la portée

constportée. En définissant la constante dans un bloc, il existe uniquement pour ce bloc.

définir un objet et le désactiver les touches

En définissant const obj = { /* keys */ } nous définissons une valeur obj c'est constant, mais on peut quand même traiter les clés comme n'importe quelle autre variable, comme le démontre exemples dans l'article de MDN. On peut désactiver une clé en la positionnant à null.

Si gestion de la mémoire c'est la préoccupation alors ces deux techniques aideront.

9
répondu Toni Leigh 2015-07-08 14:22:03

delete l'opérateur est en fait pour supprimer un propriété de l'objet, pas une variable. En fait, en mode strict, delete foo est une erreur de syntaxe.

Habituellement, vous pouvez "supprimer" une valeur/un objet en supprimant toutes les références, par exemple l'affectation null à une variable.

cependant, puisque les constantes ne sont pas inscriptibles (par définition), il n'y a aucun moyen de le faire.

8
répondu Felix Kling 2015-07-08 13:39:16

comme j'ai écrit sur mon commentaire, delete ne peut être utilisé que sur les objets et les tableaux. Donc, ce que vous pouvez réellement faire est de stocker toutes vos constantes dans un objet constant et libérer la mémoire en supprimant ses propriétés, comme ceci:

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

delete myConstants.height;
6
répondu Roumelis George 2015-07-08 11:56:52