Что выведет код 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 ошибок.