Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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对象值会改变?_Javascript - Fatal编程技术网

当我在数组中推送另一个值时,为什么JavaScript对象值会改变?

当我在数组中推送另一个值时,为什么JavaScript对象值会改变?,javascript,Javascript,这是我的密码: var arr=[]; var obj={}; (功能(){ 对于(设i=1;i当您推送时,每次都将引用推送到同一个数组。实际上,您希望每次都创建一个新数组,而不是引用同一个数组 查看此答案以了解更多信息 您可以使用中的arr.slice或Array>推送副本arr。最后arr将包含所有10个数字,但obj看起来与您的输出完全相同 var arr=[]; var obj={}; (功能(){ 对于(i=1;i),这是因为在JavaScript中,所有编程对象都是引用类型。“a

这是我的密码:

var arr=[];
var obj={};
(功能(){

对于(设i=1;i当您推送时,每次都将引用推送到同一个数组。实际上,您希望每次都创建一个新数组,而不是引用同一个数组

查看此答案以了解更多信息

您可以使用
中的
arr.slice
Array>推送副本
arr
。最后
arr
将包含所有10个数字,但
obj
看起来与您的输出完全相同

var arr=[];
var obj={};
(功能(){

对于(i=1;i),这是因为在JavaScript中,所有编程对象都是引用类型。“arr”是对数组的引用,在循环中,您将这个非常相同的引用分配给对象“obj”的每个新创建的成员。因此,实际上,只有一个内存位置(区域)存储数组(1-10)的元素和“obj”的所有成员(包括“arr”)指向相同的内存位置。