Операция delete удаляет объект, свойство объекта или элемент массива по специфицированному индексу. Синтаксис таков:
delete objectName
delete objectName.property
delete objectName[index]
delete property // верно только внутри оператора with
где objectName это имя объекта, property это существующее свойство, а index это целое число - место элемента в массиве.
Четвёртая форма верна только внутри оператора with при удалении свойства объекта.
Можно использовать операцию delete для удаления переменных, объявленных неявно, но не переменных, объявленных оператором var.
Если операция delete выполнена успешно, она устанавливает свойство или элемент в undefined. Операция delete возвращает true, если операция возможна, и false - если операция невозможна.
x=42
var y= 43
myobj=new Number()
myobj.h=4 // создаёт свойство h
delete x // возвращает true (может удалить, если х объявлена неявно)
delete y // возвращает false (не может удалить, если у объявлена через var)
delete Math.PI // возвращает false (не может удалить предопределённое свойство)
delete myobj.h // возвращает true (может удалить свойство, определённое пользователем)
delete myobj // возвращает true (может удалить, если myobj объявлен неявно)
Удаление элемента массива
Если Вы удаляете элемент массива, размер массива не изменяется. Например, если удалить a[3], a[4] всё ещё остаётся a[4], а a[3] станет undefined.
Если операция delete удаляет элемент массива, этот элемент больше не присутствует в массиве. В следующем примере trees[3] удаляется с помощью delete.
trees=new Array("redwood","bay","cedar","oak","maple")
delete trees[3]
if (3 in trees) {
// это не будет выполняться
}
Если Вы хотите, чтобы элемент массива существовал, но имел значение undefined/неопределённое, используйте ключевое слово undefined вместо операции delete. В следующем примере элементу trees[3] присваивается значение undefined, но элемент массива продолжает существовать:
trees=new Array("redwood","bay","cedar","oak","maple")
trees[3]=undefined
if (3 in trees) {
// это будет выполняться
}