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

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

Ответ 1

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

Использование области

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

Установка объекта и снятие ключей

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

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

Ответ 2

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

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

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

Ответ 3

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

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

delete myConstants.height;