const S = { id: 1, name: "Ivan", age: "39", tel: [phone] };

В функции foo происходит фильтрация объекта o по ключам из массива arr. Важно различать две проверки:

Короткий ответ

Что ответить на собеседовании

В функции foo происходит фильтрация объекта o по ключам из массива arr. Важно различать две проверки:

Подробный разбор

Ответ с пояснениями

Условие

const S = { id: 1, name: "Ivan", age: "39", tel: [phone] };

function getParam(obj, key) { return obj[key]; }

getParam(S, "tel"); getParam(S, "job");

Ответ

В функции foo происходит фильтрация объекта o по ключам из массива arr. Важно различать две проверки:

  • o.hasOwnProperty(x) проверяет, есть ли у объекта собственное свойство с именем x, включая свойства со значением undefined или null.
  • if (o[x]) проверяет истинность значения свойства, то есть свойства с ложными значениями (0, false, null, undefined, '') будут проигнорированы.

В вашем примере:

const obj = {a: 's'};
foo(obj, ['a']); // { a: 's' }

Если заменить условие на if (o.hasOwnProperty(x)), то функция будет копировать все свойства, даже если их значение ложное. Это более корректно, если нужно именно проверить наличие свойства, а не его значение.

Пример:

const obj = {a: 0, b: false, c: null};
foo(obj, ['a', 'b', 'c']);
// с hasOwnProperty: { a: 0, b: false, c: null }
// с if(o[x]): {} (потому что 0, false, null — ложные)

Рекомендуется использовать hasOwnProperty для проверки наличия свойства, если важны все значения.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку