首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript:通过引用传递

Javascript:通过引用传递
EN

Stack Overflow用户
提问于 2013-03-14 23:06:47
回答 2查看 200关注 0票数 3

有人可以在下面的代码中解释我,为什么当我做o= {}时,对象没有被重置?

代码语言:javascript
复制
var funky = function (o) {
    o.z = null;
    o.a = "aaa";        
    o = {};
};

var x = { z: "zzz"};
funky(x);

console.log(x);
EN

回答 2

Stack Overflow用户

发布于 2013-03-14 23:07:33

因为JavaScript不是通过引用传递的。它通过值传递引用。

区别是细微的,但却很重要。它的要点是,对象变量的值不是对象;它是对对象的引用。传递一个变量会传递该引用的一个副本。有了它,你几乎可以随意修改对象的内容,但你不能以调用者可以看到的方式用一个完整的其他对象替换它。

票数 7
EN

Stack Overflow用户

发布于 2013-03-14 23:09:30

o只是它当前指向的东西的别名,它不是实例(通过值传递)。

如果你想模仿“通过引用传递”,你可以这样做:

代码语言:javascript
复制
var x = { ... };
var container = { x: x };
funky(container);

现在您可以在funky()中重置它

代码语言:javascript
复制
container.x = {};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15412909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档