Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Оператор delete». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Оператор `delete`** у JavaScript використовується для **видалення властивостей з об'єктів** (або елементів з масивів), але має кілька тонких нюансів. **Ключове:** `delete` видаляє сам ключ повністю (на відміну від присвоєння `undefined`, яке лише обнуляє значення), не працює зі змінними (`var`, `let`, `const`) і не зсуває елементи масиву, залишаючи «дірку».Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняОператор `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 ``` > Видалити можна тільки властивість **об'єкта**, але не **змінну**. 2. У строгому режимі (`"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 ```Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.