Дан следующий фрагмент кода:

Функция started принимает объект info, деструктурирует из него свойства name и skill.

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

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

Функция started принимает объект info, деструктурирует из него свойства name и skill. Затем она переопределяет локальную переменную name значением "Alex Pool" и добавляет строку "delete" в массив skill. После этого возвращает новый объект с обновлённым name, изменённым массивом skill и дополнительным свойством online: true.

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

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

Условие

Дан следующий фрагмент кода:

let info = {
  name: "Alex",
  skill: ["git", "react", "read"],
};

let started = (info: any) => {
  let { name, skill } = info;
  (name = "Alex Pool"), skill.push("delete");
  return {
    name,
    skill,
    online: true,
  };
};

Объясните, что делает функция started с объектом info и опишите результат вызова started(info). Также обсудите, изменяется ли исходный объект info после вызова started(info).

Ответ

Функция started принимает объект info, деструктурирует из него свойства name и skill. Затем она переопределяет локальную переменную name значением "Alex Pool" и добавляет строку "delete" в массив skill. После этого возвращает новый объект с обновлённым name, изменённым массивом skill и дополнительным свойством online: true.

Важно, что массив skill в исходном объекте info мутируется — в него добавляется новый элемент "delete". Однако свойство name в исходном объекте не меняется, так как присваивание name = "Alex Pool" меняет только локальную переменную, а не поле объекта.

Пример вывода:

let result = started(info);
console.log(result);
// { name: "Alex Pool", skill: ["git", "react", "read", "delete"], online: true }

console.log(info.skill);
// ["git", "react", "read", "delete"]  // изменился

console.log(info.name);
// "Alex"  // не изменился

Таким образом, функция возвращает новый объект с обновлённым именем и флагом онлайн, но изменяет исходный массив навыков в объекте info.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее