Какой вывод будет у консольного кода (пример 59)

Выведется новый объект { a: 1, b: 5 }. Массив array при этом продолжит содержать прежний объект { a: 1 }; строка его вывода в условии закомментирована.

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

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

Выведется новый объект { a: 1, b: 5 }. Массив array при этом продолжит содержать прежний объект { a: 1 }; строка его вывода в условии закомментирована.

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

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

Условие

Определите, что появится в консоли после выполнения следующего фрагмента JavaScript‑кода.


let obj = { a: 1 };
let array = [obj];

obj = { ...obj, b: 5 };
console.log(obj); // Console.log(array);

Ответ

Выведется новый объект { a: 1, b: 5 }. Массив array при этом продолжит содержать прежний объект { a: 1 }; строка его вывода в условии закомментирована.

Spread создаёт поверхностную копию объекта, затем к ней добавляется b. Присваивание obj переключает переменную на новую ссылку, но не обновляет элементы ранее созданного массива. Поэтому array[0] === obj теперь false. Чтобы изменить объект, который виден через array, можно мутировать исходный obj.b до переназначения либо отдельно заменить array[0] новым объектом.

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

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

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

Подробнее