Проверяет понимание оператора in в JavaScript и его применения для проверки наличия свойства в объекте перед доступом к нему.
Оператор in в JavaScript проверяет, существует ли указанное свойство в объекте. Выражение 'payload' in data возвращает true, если ключ payload присутствует в объекте data или в его цепочке прототипов, и false в противном случае. Это принципиально отличается от простого чтения data.payload, которое вернёт undefined как для отсутствующего свойства, так и для свойства со значением undefined.
function handle(data) {
if ('payload' in data) {
// свойство существует, можно безопасно работать
console.log('Payload:', data.payload);
} else {
console.log('Payload отсутствует');
}
}
handle({ payload: undefined }); // Payload: undefined
handle({}); // Payload отсутствует
Оператор in учитывает цепочку прототипов, поэтому 'toString' in {} вернёт true. Если нужно проверить только собственные свойства объекта, используют Object.prototype.hasOwnProperty.call(data, 'payload') или Object.hasOwn(data, 'payload').
Итог: проверку 'key' in obj стоит применять, когда важно точно знать, объявлено ли свойство в объекте, особенно при работе с опциональными полями и динамическими данными.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию