我想保留变量的原始信息,以便更容易重置代码。
var $dataSets = [1,2,3,4];
var $oldData = $dataSets;
$('.button').click(function(){
$(this).toggleClass('selected');
if($(this).hasClass('selected')) {
$dataSets.splice(1,1);
console.log($dataSets);
} else {
console.log($oldData);
}
});
我的代码存在的问题是,当我修改$dataSets
时,它也会更改$oldData
。如何防止$oldData
更改?
答案 0 :(得分:4)
更改为
var $dataSets = [1,2,3,4];
var $oldData = $dataSets.slice();
JavaScript不会将$dataSets
的值传递给$oldData
,而是传递对$dataSets
本身引用的事物的引用。
这种解决方法有效,因为JavaScript的数组($dataSets
是)有一个名为slice
的方法,当没有参数调用时,会返回数组的副本。
答案 1 :(得分:0)
您可以使用Array.slice()
功能,如下所示:
var $dataSets = [1,2,3,4];
var $oldData = $dataSets.slice();
如文档中所述,slice()
不会更改原始数组,但会返回一个新数组。所以基本上,使用切片,你有两个不同的数组,可以插入/删除一个项目,而不会干扰另一个。