首页 > 解决方案 > 通过引用传递与引用副本

问题描述

我已经理解了这个概念pass by reference
然而,这个概念copy of reference让我有点困惑。

这两个通过引用传递与引用副本之间有什么区别吗?

var user={
   name:"xxx"
}

function update(ref) {
  ref = {
     dep:"yyy"
  };
}

update(user);

使用上述代码时,为什么没有重新初始化user对象?

当我按如下方式更新现有属性时:

ref.name='modified'

它更新user对象。

另外,如果我可能会问,重构的代码是否传递了参考副本

标签: javascriptobjectvariablesarguments

解决方案


如果变量ref是对某个对象的引用obj,那么 in 的值ref就是 的内存地址obj。复制ref,我们称之为ref2,只会创建另一个变量,其中存储了相同的内存地址。所以传递引用或引用的副本是一回事。

不同的是按传递和按引用传递。这两者之间的区别在网上有很好的记录。


推荐阅读