首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >变量作为对象引用不起作用

变量作为对象引用不起作用
EN

Stack Overflow用户
提问于 2018-06-11 06:57:53
回答 2查看 601关注 0票数 -1
var a = {};
var b = a;
b.c = "whatever";

console.log(a.c) // whatever. 

按预期工作,a可由b更新;

var a = {};
var b = a;
b = "whatever";

console.log(a) // {}
console.log(b) // whatever

未按预期工作。A未由b更新

更新问题:这是否意味着只有对象属性可以通过其引用进行更新?不是为了对象本身?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-11 07:06:17

请看这篇关于Explaining Value vs Reference in Javascript的文章。

当您这样做时,您已经覆盖了引用:

 b = "whatever";

当您这样做时,b不再指向a。现在,b有了自己的价值。您只需更新b引用的对象的属性,如您的示例所示:

b.c = "whatever";
票数 1
EN

Stack Overflow用户

发布于 2018-06-11 07:22:56

通过声明b = "whatever";,您已经将变量b从引用(抱歉,我不知道确切的术语,因此我将其称为“引用”)变量a重新赋值给包含值"whatever"string

重要的是要知道,JavaScript在变量赋值时是灵活的,就像当今大多数现代高级编程语言一样,因为它不仅允许您更改以前声明的变量的值,还允许您更改该赋值变量的数据类型,例如:

var x = "This is A string";
x = [] //Now the variable has been reassigned to an array.
x = {} //Now the variable has been reassigned to an object.

因此,如果您对如何分配变量不小心,您很容易创建错误,类似于您在第二种方法中所表达的错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50788752

复制
相关文章

相似问题

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