解答函数传参问题

222 阅读1分钟

需要区分函数传参中传递的是值还是引用?

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