技术背景:
阅读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
}
}
答案 0 :(得分:3)
不,因为对象是JavaScript中的引用。在这种情况下,唯一必须传递给函数的是与对象大小无关的引用。
如果您传递值(字符串,数字等等),则每次进行函数调用时都会复制该值,这会产生一些额外的性能成本。但是,除非您正在使用大量值,否则这不太可能导致重大性能损失。