Почему объекты передаются по ссылке, а переменые копируются?
Кажется глупый вопрос, но я не могу красиво и развернуто на него ответить, и поиск ничего не дал :(.
Буду рад если кто-то ответит...
про переменые более понятно... а вот про объекты не особо... возможно для того чтобы не загромождать память (но как-то это сухо), это как-то связано с LexicalEnvironment я думаю (с прототипированием и т.д.) вот бы как-то красиво ответить
Скопировать объект для передачи его в функцию может быть очень дорого с точки зрения времени и памяти - объект может быть большим.
К. т. переменная с объектом на самом деле это ссылка на то место в памяти, где храняться данные объекта, а не сам объект.
Объекты передаются по ссылке, примитивы по значению. В целом этот подход называется вызов по соиспользованию (call by sharing). Такой подход есть во многих языках, по ссылке они перечислены. И да, по сравнению с передачей всего по значению ресурсы экономятся очень заметно.