JS 将整个对象传递给函数需要更多内存

und*_*ned 3 javascript

今天我了解到,如果例如我有一个对象:

var foo = {a: 1, b: { ... }}
Run Code Online (Sandbox Code Playgroud)

我将它传递给一个函数:

function test(foo) {
  foo.b
}
Run Code Online (Sandbox Code Playgroud)

它必须将整个foo对象加载到函数的作用域中才能访问该b属性,这会增加内存消耗。

书中的建议是始终只传递您需要的内容:

function test(b) {
   b
 }

 test(foo.b)
Run Code Online (Sandbox Code Playgroud)

我的问题是这样吗?为什么?对象是通过引用传递的。

Jon*_*lms 5

它必须将整个 foo 对象加载到函数的作用域中才能访问 b 属性,这会增加内存消耗。

这是错误的。如你所说

对象是通过引用传递的。

因此,在这两种情况下,都会传递一个引用,这将消耗相同的内存(如果有的话)。

书中的建议是始终只传递你需要的东西

这对于干净的设计来说是一种很好的做法。