如何防止变量在javascript中更改

时间:2013-10-24 17:50:46

标签: javascript jquery

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

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更改?

2 个答案:

答案 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()不会更改原始数组,但会返回一个新数组。所以基本上,使用切片,你有两个不同的数组,可以插入/删除一个项目,而不会干扰另一个。