当我在数组中推送另一个值时,为什么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”)指向相同的内存位置。