Javascript 作为对象引用的变量不起作用 变量a={}; var b=a; b、 c=无论什么; console.loga.c//随便什么。
按预期工作,a可由b更新 没有按预期工作。a未由b更新Javascript 作为对象引用的变量不起作用 变量a={}; var b=a; b、 c=无论什么; console.loga.c//随便什么。,javascript,Javascript,按预期工作,a可由b更新 没有按预期工作。a未由b更新 更新问题:这是否意味着只有对象属性可以通过其引用进行更新?不是针对对象本身吗?看看这篇关于 您在执行以下操作时已覆盖引用: b = "whatever"; 当你这样做时,b不再指向a。现在,b有它自己的价值。您只需更新b引用的对象的属性,如示例中所示: b.c = "whatever"; var x = "This is A string"; x = [] //Now the variable has been reassigned
更新问题:这是否意味着只有对象属性可以通过其引用进行更新?不是针对对象本身吗?看看这篇关于 您在执行以下操作时已覆盖引用:
b = "whatever";
当你这样做时,b不再指向a。现在,b有它自己的价值。您只需更新b引用的对象的属性,如示例中所示:
b.c = "whatever";
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.
这是它们的值存储在内存中的方式:
第一种方法
第二种方法
通过声明b=无论什么;,您已经从引用中重新分配了变量b,抱歉,我不知道确切的术语,因此我将其称为“引用”变量a,以一个字符串命名,该字符串中包含任何值
重要的是要知道JavaScript在变量分配方面是灵活的,就像当今大多数现代高级编程语言一样,因为它不仅允许您更改先前声明的变量的值,还允许您更改该分配变量的数据类型,例如:
b.c = "whatever";
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.
因此,如果您不小心如何分配变量,那么很容易产生错误,类似于您在第二种方法中所表达的错误 你期望答案是什么?b只是一个指向实际对象的名称。在第一个示例中,a和b都指向同一个对象。在第二个示例中,您将对象b从a也指向新字符串的{}更改为,无论这不会更改a或对象a指向什么。只要您重写变量,它就会被重写,这意味着只有对象属性可以通过其引用?更新?。不是为对象本身?@Kardinata完全正确!是 啊因为您引用了对象。在为b指定新值之前,b被指定为引用。我搞不懂为什么b不是也变了a@Kardinata就像我说的,你给b分配了一个新值,失去了a的引用,所以你既没有修改a的字段也没有修改a的属性。
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.