javascript - 通过引用传递与引用副本
问题描述
我已经理解了这个概念pass by reference
。
然而,这个概念copy of reference
让我有点困惑。
这两个通过引用传递与引用副本之间有什么区别吗?
var user={
name:"xxx"
}
function update(ref) {
ref = {
dep:"yyy"
};
}
update(user);
使用上述代码时,为什么没有重新初始化user
对象?
当我按如下方式更新现有属性时:
ref.name='modified'
它更新user
对象。
另外,如果我可能会问,重构的代码是否传递了参考副本?
解决方案
如果变量ref
是对某个对象的引用obj
,那么 in 的值ref
就是 的内存地址obj
。复制ref
,我们称之为ref2
,只会创建另一个变量,其中存储了相同的内存地址。所以传递引用或引用的副本是一回事。
不同的是按值传递和按引用传递。这两者之间的区别在网上有很好的记录。
推荐阅读
- javascript - 在 react native 中实现 BouncingScrollPhysics 动画
- c - C - strcpy() 函数限制
- c - 是否可以在c中循环转换?
- c# - JSON 返回类型将 NULL 发送到导航属性的 JSON 响应(Asp.Net Core 3)
- tabs - Mintty:在通过 Ctrl+Ins 后跟 Shift-Ins 复制粘贴文本时保留 TAB 字符
- linux - 使用 OKTA 推送身份验证在 Linux 机器中连接到 AWS-VPN
- google-apps-script - 将问题和反馈从 Google 表单导出到 Google 表格
- function - 在lua中调用函数时使用多个括号
- swift - 使用iOS滑动删除不流畅
- javascript - Chart.js - 更改 x 轴时间序列的刻度/标签位置