--- title: >- SyntaxError: applying the 'delete' operator to an unqualified name is deprecated (SyntaxError: применение оператора 'delete' к неполному имени не рекомендуется) slug: Web/JavaScript/Reference/Errors/Delete_in_strict_mode translation_of: Web/JavaScript/Reference/Errors/Delete_in_strict_mode ---
SyntaxError: вызов delete on expression запрещён в строгом режиме в (Edge) SyntaxError: применение оператора 'delete' к неполному имени не рекомендуется в (Firefox) SyntaxError: удаление неполного идентификатора в строгом режиме запрещено в (Chrome)
{{jsxref("SyntaxError")}} только в строгом режиме.
Обычные переменные в JavaScript нельзя удалить с помощью оператора delete
. В строгом режиме попытка удалить переменную вызовет ошибку и не будет разрешена.
Оператор delete
может удалять только свойства объекта. Свойства объекта "квалифицированы", если они конфигурируемы.
В отличие от общепринятого мнения, оператор delete
не имеет ничего общего с непосредственным освобождением памяти. Управление памятью осуществляется косвенным образом через нарушение ссылок см.memory management . В разделе управление памятью и страницы оператора delete для более подробной информации.
Эта ошибка возникает только в коде строгого режима. В нестрогом коде операция просто возвращает false.
Попытка удалить простую переменную не работает в JavaScript и выдаёт ошибку в строгом режиме:
'use strict'; var x; // ... delete x; // SyntaxError: применение оператора 'delete' к неполному имени является устаревшим
Чтобы освободить содержимое переменной, задайте для неё значение {{jsxref("null")}}:
'use strict'; var x; // ... x = null; // X может быть собран "мусор"
delete