Что выведет код Junior Объекты и массивы обновлено
Порядок аргументов Object.assign
Вопрос
Что выведет код? По строке на каждый вывод.
const obj1 = { a: 10, b: 15, c: 18 };
const obj2 = Object.assign({ c: 11, d: 12 }, obj1);
console.log(obj2.c, obj2.d);
console.log(JSON.stringify(Object.keys(obj2)));
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: 18 12, ["c","d","a","b"]. Почему так Object.assign пишет в первый аргумент, и последующие источники затирают совпадающие ключи.
Что выведет
18 12
["c","d","a","b"]
Разбор
Почему так
Object.assign пишет в первый аргумент, и последующие источники затирают совпадающие ключи. Поэтому c берётся из obj1, а d остаётся из цели. Порядок ключей: сначала те, что были в цели, потом новые - важно для сериализации и для снапшот-тестов.
Вывод
18 12
["c","d","a","b"]
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.