我想保留变量的原始信息,以使代码重置更加容易。
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
不变? 最佳答案
改成
var $dataSets = [1,2,3,4];
var $oldData = $dataSets.slice();
JavaScript不会将
$dataSets
的值传递给$oldData
,而是将引用传递给$dataSets
本身引用的事物。因为JavaScript的数组(即
$dataSets
)具有称为slice
的方法,该方法在不带参数的情况下返回数组的副本,所以该解决方法行得通。