Выбор ответа Junior Объекты и массивы обновлено
Object.freeze и вложенный объект
Вопрос
Что выведет код?
const config = Object.freeze({ api: { url: '/v1' }, retries: 3 });
config.api.url = '/v2';
console.log(config.api.url);
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: '/v2'. Object.freeze поверхностный: он запрещает менять свойства самого config, но config.api это ссылка на отдельный, незамороженный объект.
Варианты ответа
'/v1''/v2'правильный ответ- TypeError при присваивании
undefined
Разбор
Object.freeze поверхностный: он запрещает менять свойства самого config, но config.api это ссылка на отдельный, незамороженный объект. Его свойство меняется без ошибок, выведется '/v2'. TypeError в строгом режиме был бы при config.retries = 5 или config.api = {}. Для полной заморозки нужен рекурсивный deepFreeze.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.