Javascript 老实说很难解释。。我使用类似于a=b,然后是a++;,但是b改变了。除此之外,这些是数组

Javascript 老实说很难解释。。我使用类似于a=b,然后是a++;,但是b改变了。除此之外,这些是数组,javascript,html,arrays,Javascript,Html,Arrays,我简短易懂的解释可以是这样的。我有两个数组,FilterList和GamesReset。每当我使用的这个函数工作并通过复选框和下拉菜单过滤掉一些游戏时,该函数就会以类似FilterList=GamesReset。在我过滤掉游戏的时间之前,这个函数似乎工作得很好。该函数永远不会触及GamesReset,除非它类似于while(i)p>数组在分配时不被复制,两个变量将引用相同的数据。这里有一个详细的帖子:它是完全有意义的,因为变量只是内存中对象的引用。一个对象可以有多个引用。 var a = { f

我简短易懂的解释可以是这样的。我有两个数组,
FilterList
GamesReset
。每当我使用的这个函数工作并通过复选框和下拉菜单过滤掉一些游戏时,该函数就会以类似
FilterList=GamesReset。在我过滤掉游戏的时间之前,这个函数似乎工作得很好。该函数永远不会触及
GamesReset
,除非它类似于
while(i)p>数组在分配时不被复制,两个变量将引用相同的数据。这里有一个详细的帖子:

它是完全有意义的,因为变量只是内存中对象的引用。一个对象可以有多个引用。
var a = { foo: 'bar' };
var b = a;

// b is now a reference to a and they both point to the same object

b.foo = 'doe';
alert( a.foo ); // alerts doe
数组也是如此。因此,当您执行
FilterList=GamesReset
操作时,您不是在复制数组-您只是将同一数组分配给另一个变量。对任一引用所做的任何突变或更改都将反映在所有引用中

要创建数组的副本,您可以使用
slice

FilterList = GamesReset.slice();
FilterList = GamesReset.slice();