SyntaxError: применение оператора 'delete' к неквалифицированному имени устарело
Исключение JavaScript, возникающее только в строгом режиме, "применение оператора 'delete' к неквалифицированному имени устарело", возникает при попытке удалить переменные с использованием оператора 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 может удалять только свойства объекта. Свойства объекта являются "квалифицированными" (qualified), если они настраиваемые (configurable).
В отличие от распространенного мнения, оператор delete не имеет прямого отношения к освобождению памяти. Управление памятью осуществляется косвенно через разрыв ссылок. Дополнительную информацию смотрите на странице управления памятью и на странице оператора delete.
Эта ошибка возникает только в коде строгого режима. В нестрогом коде операция просто возвращает false.
Примеры
Освобождение содержимого переменной
Попытка удалить обычную переменную вызывает ошибку в строгом режиме:
"use strict"; var x; // … delete x; // SyntaxError: applying the 'delete' operator to an unqualified name // is deprecated
Чтобы освободить содержимое переменной, вы можете присвоить ей null:
"use strict"; var x; // … x = null; // x can be garbage collected
Смотрите также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Delete_in_strict_mode