我看过this帖子,使用delete
关键字,我们可以删除JavaScript变量。但是当我尝试使用常量进行相同的操作时,但是当我尝试删除常量时它返回false。有没有办法从内存中删除常量?
我试过this回答,但它也没有用。
答案 0 :(得分:12)
delete
运算符实际上是用于删除对象属性,而不是变量。实际上,在严格模式下,delete foo
is a syntax error。
通常你可以通过删除对它的所有引用来“删除”一个值/对象,例如将null
分配给变量。
但是,由于常量不可写(根据定义),因此无法执行此操作。
答案 1 :(得分:12)
你不能直接这样做,查看规格告诉我们可以设置值,但不能覆盖(例如standard definition of a constant),但是有一些有点hacky不设定常数值的方法。
使用范围
const
是scoped。通过在块中定义常量,它只存在于该块中。
设置对象并取消设置键
通过定义const obj = { /* keys */ }
,我们定义了一个恒定的值obj
,但我们仍然可以像处理任何其他变量一样处理密钥,正如MDN文章中的the examples所示。可以通过将其设置为null来取消设置密钥。
如果问题是memory management,那么这两种技术都会有所帮助。
答案 2 :(得分:7)
正如我在评论中写的那样,删除只能用于对象和数组。所以,你实际可以做的是将所有常量存储在一个常量对象中,并通过删除它的属性来释放内存,如下所示:
const myConstants = {};
myConstants.height = 100;
delete myConstants.height;