This page was translated from English by the community.Learn more and join the MDN Web Docs community.
SyntaxError: applying the 'delete' operator to an unqualified name is deprecated
Исключение "applying the 'delete' operator to an unqualified name is deprecated" возникает тольков строгом режиме при попытке удалить переменную с помощью оператораdelete.
In this article
Сообщение
SyntaxError: Delete of an unqualified identifier in strict mode. (V8-based)SyntaxError: applying the 'delete' operator to an unqualified name is deprecated (Firefox)SyntaxError: Cannot delete unqualified property 'a' in strict mode. (Safari)
Тип ошибки
SyntaxError тольков строгом режиме.
Что не так?
Обычные переменные в JavaScript нельзя удалить с помощью оператораdelete. В строгом режиме попытка удалить переменную вызовет ошибку и не будет разрешена.
Операторdelete может удалять только свойства объекта. Свойства объекта "квалифицированы", если они конфигурируемы.
В отличие от общепринятого мнения, операторdelete не имеет ничего общего с непосредственным освобождением памяти. Управление памятью осуществляется косвенным образом через удаление ссылок, читайте подробнее в разделепро управление памятью, а также на странице оператораdelete.
Эта ошибка возникает тольков строгом режиме. В нестрогом режиме операция просто возвращаетfalse.
Примеры
Попытка удалить простую переменную не работает в JavaScript и выдаёт ошибку в строгом режиме:
"use strict";var x;// ...delete x;// SyntaxError: применение оператора 'delete' к неполному имени является устаревшимЧтобы освободить содержимое переменной, задайте для неё значение:null
"use strict";var x;// ...x = null;// X может быть собран "мусор"