我想保留变量的原始信息,以使代码重置更加容易。

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的方法,该方法在不带参数的情况下返回数组的副本,所以该解决方法行得通。

10-04 21:49