Сегодня я узнал, что если, например, у меня есть объект:

var foo = {a: 1, b: { ... }} 

И я передаю это функции:

 function test(foo) { foo.b } 

Он должен загрузить весь объект foo в область действия функции, чтобы получить доступ к свойству b , что увеличивает потребление памяти.

Совет в книге — всегда передавать только то, что вам нужно:

 function test(b) { b } test(foo.b) 

Мой вопрос, правда ли это? и почему? объект передается по ссылке.

Он должен загрузить весь объект foo в область действия функции, чтобы получить доступ к свойству b, что увеличивает потребление памяти.

Это просто неправильно . Как ты сказал

объект передается по ссылке.

Таким образом, в обоих случаях передается ссылка, которая потребляет одну и ту же память (если она вообще используется).

Совет в книге — всегда передавать только то, что вам нужно

Это имеет смысл как хорошая практика для чистого дизайна.

Нет и вот доказательство.

 const foo = {a: 1, b: 'bar'} function printB(obj){ console.log(obj.b) setTimeout(() ={amp}gt;console.log(obj.b),1000) } // pitfall changing a object inside a function function editB(obj){ obj.b = `I'm just writing something to an object` } printB(foo) // prints bar editB(foo) // after one second it prints 'I'm just writing something to an object' 
FUBAR

новый участник этого сайта. Будьте внимательны, спрашивая разъяснения, комментируя и отвечая. Проверьте наш

Правила поведения

,