How to unset a Javascript Constant in ES6?

JavascriptEcmascript 6

Javascript Problem Overview


I read this post, using delete keyword, we can delete JavaScript variable. But when I tried the same operations with constant but it is returning false when I try to delete constant. Is there any way to delete constants from memory? I tried this answer but its also not working.

Javascript Solutions


Solution 1 - Javascript

You can't directly do it, looking at the specs show us that the value can be set, but not over-written (such is the standard definition of a constant), however there are a couple of somewhat hacky ways of unsetting constant values.

Using scope

const is scoped. By defining the constant in a block it will only exist for this block.

Setting an object and unsetting keys

By defining const obj = { /* keys */ } we define a value obj that is constant, but we can still treat the keys like any other variable, as is demonstrated by the examples in the MDN article. One could unset a key by setting it to null.

If it's memory management that is the concern then both these techniques will help.

Solution 2 - Javascript

The delete operator is actually for deleting an object property, not a variable. In fact, in strict mode, delete foo is a syntax error.

Usually you can "delete" a value/object by removing all references to it, e.g. assigning null to a variable.

However, since constants are not writable (by definition) there is no way to do this.

Solution 3 - Javascript

As I wrote on my comment, delete can only be used on objects and arrays. So, what you can actually do is store all your constants in a constant object and free up memory by deleting it's properties, like this:

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

delete myConstants.height;

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionLaxmikant DangeView Question on Stackoverflow
Solution 1 - JavascriptToni LeighView Answer on Stackoverflow
Solution 2 - JavascriptFelix KlingView Answer on Stackoverflow
Solution 3 - JavascriptRoumelis GeorgeView Answer on Stackoverflow