Как отключить константу Javascript в ES6?

я прочитала этой post, используя delete ключевое слово, мы можем удалить переменную JavaScript. Но когда я пробовал те же операции с константой, но он возвращает false, когда я пытаюсь удалить константу. Есть ли способ удалить константы из памяти? Я пытался!--4-->этой ответ, но его также не работает.

3 ответов


вы не можете напрямую сделать это, глядя на спецификации, показывают нам, что значение может быть установлено ,но не перезаписано (таково стандартное определение константы), однако есть несколько несколько хакерских способов сбросить постоянные значения.

использование scope

const is scoped. Определив константу в блоке, она будет существовать только для этого блока.

установка объекта и отключение ключи!--9-->

определение const obj = { /* keys */ } мы определяем значение obj это константа, но мы все еще можем рассматривать ключи как любую другую переменную, как показано примеры в статье MDN. Можно отключить ключ, установив его в значение null.

Если это управление памятью это проблема, тогда обе эти техники помогут.


на delete оператор на самом деле для удаления объект недвижимости, а не переменной. На самом деле, в строгом режиме, delete foo является синтаксической ошибкой.

обычно вы можете" удалить " значение / объект, удалив все ссылки на него, например, назначив null переменной.

однако, поскольку константы не записываются (по определению), нет способа сделать это.


Как я написал в своем комментарии, delete можно использовать только для объектов и массивов. Итак, на самом деле вы можете сохранить все свои константы в постоянном объекте и освободить память, удалив его свойства, например:

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

delete myConstants.height;