SyntaxError: applying the 'delete' operator to an unqualified name is deprecated

Исключение "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)

Тип ошибки

Что не так?

Обычные переменные в JavaScript нельзя удалить с помощью оператора delete. В строгом режиме попытка удалить переменную вызовет ошибку и не будет разрешена.

Оператор delete может удалять только свойства объекта. Свойства объекта "квалифицированы", если они конфигурируемы.

В отличие от общепринятого мнения, оператор delete не имеет ничего общего с непосредственным освобождением памяти. Управление памятью осуществляется косвенным образом через удаление ссылок, читайте подробнее в разделе про управление памятью, а также на странице оператора delete.

Эта ошибка возникает только в строгом режиме. В нестрогом режиме операция просто возвращает false.

Примеры

Попытка удалить простую переменную не работает в JavaScript и выдаёт ошибку в строгом режиме:

js
"use strict";

var x;

// ...

delete x;

// SyntaxError: применение оператора 'delete' к неполному имени является устаревшим

Чтобы освободить содержимое переменной, задайте для неё значение null:

js
"use strict";

var x;

// ...

x = null;

// X может быть собран "мусор"

Смотрите также