Как проверить наличие поля (свойства) у объекта в JavaScript?

«Как проверить наличие поля (свойства) у объекта в JavaScript?» — вопрос из категории JavaScript, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В JavaScript есть несколько методов, различающихся по смыслу и надёжности.

1. Оператор in Проверяет наличие свойства в самом объекте или в его цепочке прототипов.

const obj = { name: 'Alice' };
console.log('name' in obj); // true
console.log('toString' in obj); // true (унаследовано от Object.prototype)

2. Метод Object.hasOwn() (ES2022) или obj.hasOwnProperty() Проверяет только собственные (не унаследованные) свойства объекта.

const obj = { name: 'Alice' };
console.log(Object.hasOwn(obj, 'name')); // true (рекомендуемый современный способ)
console.log(obj.hasOwnProperty('name')); // true
console.log(obj.hasOwnProperty('toString')); // false

3. Сравнение с undefined (с осторожностью) Может не сработать, если свойство существует, но его значение явно установлено в undefined.

const obj = { name: undefined };
console.log(obj.name !== undefined); // false, хотя свойство существует!

4. Опциональная цепочка (?.) с последующей проверкой Удобный и безопасный способ для глубоко вложенных свойств.

const user = { profile: { name: 'Bob' } };
if (user?.profile?.name !== undefined) {
  // Свойство существует и не равно undefined
}

Для других структур:

  • Map: Используйте метод .has(key).
  • Set: Используйте метод .has(value).
  • Array: Для индексов используйте index in array или сравнение index < array.length.