技术背景:
阅读this page关于 JavaScript 如何通过共享到函数来传递对象.. 现在我知道被调用函数内的对象与第一个外部作用域中的对象相同,除非直接分配给它。
这就是我可以用语言表达的方式。但是 the page 中的示例代码更好、更简单。
我的问题如下:
因为我正在尝试改进我的计算方法,所以我有一个非常基本的问题。将较小的派生对象(假设只有重要键的子字典)传递给仅用于读取(而不是分配给)的函数是否对性能(运行时间)更好?
为了简单起见,这里是一个示例
function func(){
var bigobj = {a:1, b:2, c:3, d:4};
otherFunc(bigobj.a); // will we gain some time against calling otherFunc(bigobj); ??
function otherFunc(obj){
//obj is a smaller representation of bigobj
//obj will not be assigned to here
}
}
最佳答案
不,因为对象是 JavaScript 中的引用。在这种情况下,唯一必须传递给函数的是与对象大小无关的引用。
如果您传递值(字符串、数字等),则每次进行函数调用时都会复制该值,这会产生一些额外的性能成本。但是,除非您使用大量值,否则这不太可能对性能造成重大影响。
关于javascript - 将较小的对象传递给函数是否可以更好地提高性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49881314/