Что выведет код Junior Объекты и массивы обновлено

Спред и вложенный объект

Вопрос

Что выведет код? По строке на каждый вывод.

let a = { b: { c: 1 } };
a.b.c = 2;
let b = { ...a };
b.b.c = 1;
console.log(a.b.c);
console.log(a.b === b.b);

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: 1, true. Почему так Вложенный объект остаётся общим по ссылке, поэтому изменение через копию видно в оригинале.

Что выведет

1
true

Разбор

Почему так

Вложенный объект остаётся общим по ссылке, поэтому изменение через копию видно в оригинале. Это причина, по которой в React состояние с вложенными объектами обновляют послойно, а не одним спредом верхнего уровня.

Вывод

1
true

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.