SyntaxError: applying the 'delete' operator to an unqualified name is deprecated
Please take two minutes to fill out our short survey.
Исключение "applying the 'delete' operator to an unqualified name is deprecated" возникает только в строгом режиме при попытке удалить переменную с помощью оператора delete
.
Сообщение
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 может быть собран "мусор"