Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 作为对象引用的变量不起作用 变量a={}; var b=a; b、 c=无论什么; console.loga.c//随便什么。_Javascript - Fatal编程技术网

Javascript 作为对象引用的变量不起作用 变量a={}; var b=a; b、 c=无论什么; console.loga.c//随便什么。

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

按预期工作,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 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.