Skip to main content

Оператор delete

Оператор delete у JavaScript використовується для видалення властивостей з об'єктів (або елементів з масивів). Але в нього є кілька тонких нюансів, які варто знати. Розберемо детально.


Синтаксис

javascript
delete object.property

або

javascript
delete object['property']

Приклад з об'єктом

javascript
const user = { name: 'Tim', age: 25 }; delete user.age; console.log(user); // { name: 'Tim' } console.log('age' in user); // false

Оператор delete видаляє саму властивість з об'єкта, а не просто її значення.


Значення, що повертається

delete повертає логічне значення:

ВипадокПовертає
Видалення пройшло успішноtrue
Видалити неможливо (наприклад, властивість «неконфігурована»)false

Приклад:

javascript
const obj = {}; Object.defineProperty(obj, 'x', { value: 10, configurable: false }); console.log(delete obj.x); // false console.log(obj.x); // 10

Приклад з масивом

javascript
const arr = [10, 20, 30]; delete arr[1]; console.log(arr); // [10, <1 empty item>, 30] console.log(arr.length); // 3

Важливо: delete не зсуває елементи масиву, він просто видаляє значення, залишаючи «дірку» (empty).

Якщо потрібно видалити елемент зі зміною довжини масиву, використовуй методи:

javascript
arr.splice(1, 1); // видалить елемент і зсуне інші

Приклад з об'єктом і undefined

Різниця між delete і присвоєнням undefined:

javascript
const user = { name: 'Tim', age: 25 }; user.age = undefined; console.log(user); // { name: 'Tim', age: undefined } console.log('age' in user); // true (ключ залишився) delete user.age; console.log(user); // { name: 'Tim' } console.log('age' in user); // false (ключ видалено)

delete видаляє ключ повністю undefined - просто обнуляє значення


Приклад з прототипом

delete не зачіпає властивості, успадковані через прототип:

javascript
const person = { name: 'Alex' }; const user = Object.create(person); console.log('name' in user); // true delete user.name; // не видалить з прототипу console.log('name' in user); // true

Він видаляє тільки власні властивості об'єкта.


Обмеження

  1. delete не працює зі змінними, оголошеними через var, let, const:
javascript
let x = 10; console.log(delete x); // false console.log(x); // 10

Видалити можна тільки властивість об'єкта, але не змінну.

  1. У строгому режимі ("use strict") спроба видалити недопустиму властивість викличе помилку:
javascript
"use strict"; delete Object.prototype; // TypeError

Підсумок

Що робитьВидаляє властивість з об'єкта
Працює зОб'єктами, масивами
Повертаєtrue або false
Не працює дляЗмінних (var, let, const)
Не зсуває елементи масивуЗалишає «дірку»
Безпечно дляВласних властивостей об'єкта

Коротко

javascript
const obj = { a: 1, b: 2 }; delete obj.a; console.log(obj); // { b: 2 } console.log('a' in obj); // false

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.