js函数参数是 值传递 还是 引用传递 ?
结论:
js中 函数参数 传递方式 ,对于简单数据类型来说是值传递, 对于复杂数据类型来说是引用或者说指针传递、地址传递。
注意:
在学习c++的时候string根本不属于简单数据类型(结构体封装的内部使用chat类型),但javascript中却属于简单数据类型(编译器会处理将string,所以可以将string认为简单数据类型)
let temp = 23;
let str = "sdf";
let erweiArr = [
[1, 435, 23],
[1, 32, 23],
[1, 435, 23],
];
function testnumber(temp) {
temp = 111;
}
function teststring(str) {
str = "ewrwerw";
}
function testArry(erweiArr) {
let arr = erweiArr[0];
arr[1] = "ewrwerw";
}
testnumber(temp); //23
testnumber(str);//sdf
testArry(erweiArr);//[[1, "ewrwerw", 23],[1, 32, 23],[1, 435, 23]]
参数传递性能问题
最近在做项目优化,看项目的时候发现个问题,因为涉及到很多数据,处理数据时会将数据在各个函数间传递,有了个想法,将数据量很大的对象或数组作为函数参数来回传递会不会降低整个项目性能?
查了很多资料发现确实会影响性能,尽管数据传递的是指针,尽量避免将大量数据来回传递。
解决方法:
1.尽量不要传整体对象或数组,可以先进行解析分割成小的局部变量 将每个函数所需的部分传递就好,参考威哥写的新pdf中解析函数
2.懒加载或者分页 一次性加载数据量减少
3.尽量避免深拷贝
下面是写的一个绘制pdf的一个类,在构造函数时会将json数据传递过来将数据进行切割,分成一段一段,后面