Thanks to visit codestin.com
Credit goes to developer.mozilla.org

This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

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)

Тип ошибки

SyntaxError только в строгом режиме.

Что не так?

Обычные переменные в 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 может быть собран "мусор"

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