需要区分函数传参中传递的是值还是引用?
1、问题
首先是一个 问题
function changeObjProperty(o){
o.sitUrl = 'http://www.baidu.com';
o = new Object();
o.sitUrl = 'https://taou.cn/DdCw';
}
let websit = new Object();
changeObjProperty(websit);
console.log(websit.sitUrl)
答案打印 baidu 为什么不打印Google ? 我开始寻思 为什么不是两个都打印?
2、解答
分成两种 1)基本类型值 在向参数传递基本类型的值时,被传递的值会被复制给一个局部变量(命名参数或arguments对象的一个元素)
2)引用类型值 (就是这个问题)
向参数传递引用类型的值时,会把这个值在内存中的地址复制给一个局部变量,因此这个局部变量的变化会反映在函数的外部
当在函数内部重写引用类型的形参时,这个变量引用的就是一个局部对象了。而这个局部对象会在函数执行完毕后立即被销毁
希望可以解除你的疑惑 留下我的 github 这里有你需要的一切 欢迎关注交流 github.com/huanhunmao