Книга: JavaScript. Подробное руководство, 6-е издание
4.13.3. Оператор delete
4.13.3. Оператор delete
Унарный оператор delete
выполняет попытку удалить свойство объекта или элемент массива, определяемый операндом.[3] Подобно операторам присваивания, инкремента и декремента, оператор delete
обычно используется ради побочного эффекта, выражающегося в удалении свойства, а не ради возвращаемого значения. Ниже приводятся несколько примеров его использования:
var о = {х: 1, у: 2}; // Определить объект
delete о.х; // Удалить одно из его свойств
"х" in о // => false: свойство больше не существует
var а = [1,2,3]: // Создать массив
delete а[2]; // Удалить последний элемент массива
2 in а // => false: второй элемент больше не существует
a.length // => 3: обратите внимание, что длина массива при этом не изменилась
Внимание: удаленное свойство или элемент массива не просто получает значениеundefined
. После удаления свойства оно прекращает свое существование. Попытка прочитать значение несуществующего свойства возвратит значение undefined
, но вы можете проверить фактическое наличие свойства с помощью оператора in
(раздел 4.9.3). Операция удаления элемента массива оставляет в массиве «дырку» и не изменяет длину массива. В результате получается разреженный массив.
Оператор delete
требует, чтобы его операнд был левосторонним выражением. Если операнд не является левосторонним выражением, оператор не будет выполнять никаких действий и вернет значение true
. В противном случае delete
попытается удалить указанное левостороннее выражение. В случае успешного удаления значения левостороннего выражения оператор delete
вернет значение true
. Не все свойства могут быть удалены: некоторые встроенные свойства из базового и клиентского языков JavaScript устойчивы к операции удаления. Точно так же не могут быть удалены пользовательские переменные, объявленные с помощью инструкции var. Кроме того, невозможно удалить функции, объявленные с помощью инструкции function
, а также объявленные параметры функций.
В строгом режиме, определяемом стандартом ECMAScript 5, оператор delete
возбуждает исключение SyntaxError
, если его операндом является неквалифицированный идентификатор, такой как имя переменной, функции или параметра функции: он может оперировать только операндами, которые являются выражениями обращения к свойству (раздел 4.4). Кроме того, строгий режим определяет, что оператор delete
должен возбуждать исключение ТуреЕггог
, если запрошено удаление ненастраиваемого свойства (раздел 6.7). В обычном режиме в таких случаях исключение не возбуждается, и оператор delete
просто возвращаетfalse
, чтобы показать, что операнд не был удален.
Ниже приводится несколько примеров использования оператора delete
:
var о = {х:1, у:2}; // Определить переменную; инициализировать ее объектом
delete о.х; // Удалить одно из свойств объекта; вернет true
typeof о.х; // Свойство не существует; вернет "undefined"
delete о.х; // Удалить несуществующее свойство; вернет true
delete о; // Объявленную переменную удалить нельзя; вернет false
// В строгом режиме возбудит исключение.
delete 1; // Аргумент не является левосторонним выражением; вернет true
this.x =1; // Определить свойство глобального объекта без var
delete х; // Удалить: вернет true при выполнении в нестрогом режиме; в строгом
// режиме возбудит исключение. Используйте 'delete this.x' взамен,
х; // Ошибка времени выполнения: переменная х не определена
С оператором delete мы снова встретимся в разделе 6.3.
- Метод Delete
- 11.7. Отправка запросов HTTP DELETE с применением NSURLConnection
- delete - Удаление объекта, элемента массива или переменной
- 4.7.4. Побочные эффекты операторов
- 4.13. Прочие операторы
- Оператор DELETE
- Совет 7. При использовании контейнеров указателей, для которых вызывался оператор new, не забудьте вызвать delete для ук...
- Арифметические операторы
- 1.2.4. Операторы и приоритеты
- Условные операторы
- 1. Оператор Select – базовый оператор языка структурированных запросов
- Поразрядные операторы