引用类型作为函数参数何解

2019-01-03 09:56:09来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

在向函数传递引用类型的参数时,相当于把引用类型的地址复制给函数内的一个局部变量,所以局部变量和传入的参数会指向内存中的同一个对象。  局部变量的变化也会映射到传入参数

function setAge(obj){
  obj.age = 20;      
}
var person = new Object();
setAge(person);
console.log(person.age); // 20

解释: 我们创建了person对象,但是我们创建的person并没有age属性,然后我们通过setAge方法给函数内的局部变量obj添加了age属性,但是函数内局部变量obj的变化会映射到传入参数,这说明两者在都指向内存中的同一个地址。

然而引用类型作为参数传递并不说明引用类型传参是按引用传参的

function setAge(person){
  obj.age = 20;
  obj = {
     age: 30
  };
}
var person = new Object();
setAge(person);
console.log(person.age); // 20

解释:我们在函数内让person重新指向一个新的对象,等于切断了函数内局部变量obj与传入参数person的联系,即局部变量指向一个新的地址。

如果是按引用类型传递的话,那么全局变量person就会与局部变量obj指向同一个地址,那么person.age也应为30,由于不是按引用传递的,所以全局变量person还是指向原来的地址

 

参考自: JavaScript高级程序设计第3版

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:ios软键盘将页面抵到上面后,关闭软键盘页面不回弹

下一篇:Vuejs 使用 lib 库模式打包 umd 解决 NPM 包发布的问题