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

Мутация через ссылку

Вопрос

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

function change(obj, arr) {
  obj.a = 2;
  obj = { a: 99 };
  arr.push(4);
  arr = [99];
}
const o = { a: 1 };
const a = [1, 2, 3];
change(o, a);
console.log(o.a);
console.log(a.length);

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

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

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

Коротко

Код выведет: 2, 4. Почему так В JS всё передаётся по значению, но значение объекта - это ссылка.

Что выведет

2
4

Разбор

Почему так

В JS всё передаётся по значению, но значение объекта - это ссылка. Мутация по ссылке видна снаружи, переприсваивание параметра - нет.

Вывод

2
4

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

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