Неіснуюча властивість об'єкта
Коротка відповідь
Якщо звернутися до неіснуючої властивості об'єкта,
то помилки не буде,
а результатом стане undefined.
Приклад
javascript
const user = { name: 'Oleh' };
console.log(user.name); // "Oleh"
console.log(user.age); // undefined
console.log(user.address); // undefinedJavaScript не видає помилку, а просто повертає
undefined.
Чому так відбувається
JS при зверненні до властивості:
- Перевіряє, чи є вона в об'єкті.
- Якщо є → повертає її значення.
- Якщо немає → повертає
undefined.
Тобто:
javascript
user.hasOwnProperty('age'); // false
user.age; // undefinedАле важливо: помилка з'явиться, якщо звернутися далі по ланцюжку
javascript
console.log(user.address.city); // TypeErrorЧому?
user.address- цеundefined, а уundefinedне можна запитувати властивості (city).
Як уникнути помилки при доступі до вкладених властивостей
Спосіб 1. Ручні перевірки
javascript
if (user.address && user.address.city) {
console.log(user.address.city);
}Спосіб 2. Оператор опціонального ланцюжка ?. (сучасний спосіб)
javascript
console.log(user.address?.city); // undefined (але без помилки!)Якщо зліва від
?.єnullабоundefined, JS зупиняє обчислення і повертаєundefined.
Спосіб 3. Використати типове значення через ??
javascript
console.log(user.address?.city ?? 'Не вказано');
// "Не вказано"Приклад з динамічним ключем
javascript
const key = 'email';
console.log(user[key]); // undefined (якщо властивості немає)Навіть при динамічному доступі через
[]поведінка та сама, простоundefined.
Відмінність від інших випадків
| Ситуація | Результат | Пояснення |
|---|---|---|
user.age | undefined | Властивість відсутня |
user.age.city | TypeError | undefined не є об'єктом |
'age' in user | false | Перевірка наявності властивості |
user.hasOwnProperty('age') | false | Перевірка лише власних властивостей |
user.name ?? 'ні' | 'Oleh' | Повертає значення |
user.age ?? 'ні' | 'ні' | Типове значення |
Підсумок
| Поведінка | Що робить |
|---|---|
obj.missing | повертає undefined |
| Помилки немає | навіть якщо властивості немає |
| Помилка з'являється | при спробі звернутися глибше (undefined.city) |
| Рішення | використати ?. або ?? |
Приклад для закріплення
javascript
const user = { name: 'Oleh' };
console.log(user.age); // undefined
console.log(user.age?.value); // undefined (без помилки)
console.log(user.age.value); // TypeError
console.log(user.age ?? 'ні'); // "ні"Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.