目录
1) 可以认为是引用的情况
1.1)入参是一个数组,此时函数体内对入参的修改在函数返回后仍然有效。
1.2)入参是一个object,在函数体内对object的具体元素做修改,修改在函数返回后仍然有效。
1.3) Array.push()的入参是一个object,那么Array新增的元素也是一个引用
2) 不能被视为引用的情况
2.1) 入参是一个基本数据类型,如数字,字符串等
2.2) 入参是object时,在函数内对其整体赋值是无效的
2.3) 即使修改的是入参的一个property, 假如这个property也是一个object,那么对它整体赋值也是无效的
2.4) 入参是数组时,对其进行整体赋值也是无效的
javascript与c++不同,js里没有引用符这一说。那么当什么时候函数入参可以被函数改动,并且这个改动在函数返回后仍然保留着呢?
1) 可以认为是引用的情况
1.1)入参是一个数组,此时函数体内对入参的修改在函数返回后仍然有效。
![](https://img-blog.csdnimg.cn/b320c4ee4d3640cc8b23bdd7d9da5567.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGlqaV9kaWdpdGFs,size_20,color_FFFFFF,t_70,g_se,x_16)
1.2)入参是一个object,在函数体内对object的具体元素做修改,修改在函数返回后仍然有效。
![](https://img-blog.csdnimg.cn/3c3bb6efd5964602a52db39537ea6750.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGlqaV9kaWdpdGFs,size_20,color_FFFFFF,t_70,g_se,x_16)
1.3) Array.push()的入参是一个object,那么Array新增的元素也是一个引用 ![](https://img-blog.csdnimg.cn/796fcb5a260b47a9aae7fe8bf82abb09.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGlqaV9kaWdpdGFs,size_20,color_FFFFFF,t_70,g_se,x_16)
2) 不能被视为引用的情况
2.1) 入参是一个基本数据类型,如数字,字符串等
![](https://img-blog.csdnimg.cn/449f5adb7f014a918f5181e6245034d6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGlqaV9kaWdpdGFs,size_20,color_FFFFFF,t_70,g_se,x_16)
2.2) 入参是object时,在函数内对其整体赋值是无效的
![](https://img-blog.csdnimg.cn/910ba50bf63d47b19a162658bc74d535.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGlqaV9kaWdpdGFs,size_20,color_FFFFFF,t_70,g_se,x_16)
2.3) 即使修改的是入参的一个property, 假如这个property也是一个object,那么对它整体赋值也是无效的
![](https://img-blog.csdnimg.cn/6db73ea5ca4a432cb2a20a230fb0b855.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGlqaV9kaWdpdGFs,size_20,color_FFFFFF,t_70,g_se,x_16)
2.4) 入参是数组时,对其进行整体赋值也是无效的
![](https://img-blog.csdnimg.cn/fcbfdf43b0ee4326903d46c5d35ba430.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGlqaV9kaWdpdGFs,size_20,color_FFFFFF,t_70,g_se,x_16)